New file |
| | |
| | | using System.ComponentModel; |
| | | using Kingdee.BOS.Contracts; |
| | | using Kingdee.BOS; |
| | | using Kingdee.BOS.Core; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | using System.Data; |
| | | using ZD.Cloud.Logger; |
| | | using Newtonsoft.Json.Linq; |
| | | using System; |
| | | using Kingdee.BOS.Util; |
| | | using System.Linq; |
| | | using ZD.Cloud.WebApi; |
| | | using Demo.Model.Model; |
| | | using Demo.Model.Model.PODemandPlan; |
| | | using System.Diagnostics; |
| | | using System.Collections.Generic; |
| | | using ZD.Share.Common; |
| | | |
| | | namespace Demo.TimedTaskPlugIn.PRD |
| | | { |
| | | [Description("采购订单生成提料计划")] |
| | | [HotUpdate] |
| | | public class TLPlanTimeTaskByPurchase : Kingdee.BOS.Contracts.IScheduleService |
| | | { |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | public Context Context; |
| | | public void Run(Context ctx, Schedule schedule) |
| | | { |
| | | try |
| | | { |
| | | Stopwatch sw = new Stopwatch(); |
| | | sw.Start(); |
| | | Context = ctx; |
| | | string sql = @"/*dialect*/ select count(*) js from t_PUR_POOrder a |
| | | join t_PUR_POOrderEntry b on a.FID = b.FID |
| | | where FBILLTYPEID in |
| | | ( |
| | | select FBILLTYPEID from T_BAS_BILLTYPE |
| | | where FBILLFORMID = 'PUR_PurchaseOrder' |
| | | and FNUMBER in('CGDD09_SYS', 'CGDD10_SYS') |
| | | ) |
| | | and FDOCUMENTSTATUS = 'C' |
| | | and FENTRYID not in (select distinct FHPOOrderEntryID from Cg_PODemandPlanBillSub)"; |
| | | int ret = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); |
| | | if (ret == 0) |
| | | return; |
| | | Extraction(); |
| | | LogHelper.Info("提料计划时长:" + sw.Elapsed); |
| | | sw.Stop(); |
| | | |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message.ToString()); |
| | | } |
| | | } |
| | | |
| | | public void Extraction() |
| | | { |
| | | try |
| | | { |
| | | //提料计划预处理 清理提料计划单数据 更新采购订单提料计划数量 |
| | | string sql = @"select a.FID,b.FENTRYID,B.FSEQ,a.FBILLNO,A.FSUPPLIERID,d.FNUMBER as FSUPPLIERNAME,a.FDATE,b.FMATERIALID,c.FNUMBER as FMATERIALNAME,b.FQTY from t_PUR_POOrder a |
| | | join t_PUR_POOrderEntry b on a.FID = b.FID |
| | | join T_BD_MATERIAL c on b.FMATERIALID = c.FMATERIALID |
| | | join T_BD_SUPPLIER d on a.FSUPPLIERID=d.FSUPPLIERID |
| | | left join Cg_PODemandPlanBillSub e on b.FENTRYID =e.FHPOOrderEntryID |
| | | where a.FBILLTYPEID in |
| | | ( |
| | | select FBILLTYPEID from T_BAS_BILLTYPE |
| | | where FBILLFORMID = 'PUR_PurchaseOrder' |
| | | and FNUMBER in('CGDD09_SYS','CGDD10_SYS') |
| | | ) |
| | | and a.FDOCUMENTSTATUS = 'C' |
| | | "; |
| | | |
| | | DataTable purDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | sql = @"select distinct a.FID from t_PUR_POOrder a |
| | | join t_PUR_POOrderEntry b on a.FID = b.FID |
| | | join T_BD_MATERIAL c on b.FMATERIALID = c.FMATERIALID |
| | | join T_BD_SUPPLIER d on a.FSUPPLIERID = d.FSUPPLIERID |
| | | left join Cg_PODemandPlanBillSub e on b.FENTRYID = e.FHPOOrderEntryID |
| | | where a.FBILLTYPEID in |
| | | ( |
| | | select FBILLTYPEID from T_BAS_BILLTYPE |
| | | where FBILLFORMID = 'PUR_PurchaseOrder' |
| | | and FNUMBER in('CGDD09_SYS', 'CGDD10_SYS') |
| | | ) |
| | | and a.FDOCUMENTSTATUS = 'C' |
| | | "; |
| | | DataTable _purDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | |
| | | JArray FinalyResult = new JArray(); |
| | | int tlmmm = 1; |
| | | if (_purDt.Rows.Count > 0) |
| | | { |
| | | foreach (DataRow _dr in _purDt.Rows) |
| | | { |
| | | DataRow[] purDtRows = purDt.Select($"FID = '{_dr[0]}'"); |
| | | LogHelper.Info(purDtRows.ToString()); |
| | | JObject model = new JObject(); |
| | | model.Add("FHDate", purDtRows[0]["FDATE"].ToString()); |
| | | model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" }); |
| | | model.Add("FSupplierID", new JObject() { ["Fnumber"] = purDtRows[0]["FSUPPLIERNAME"].ToString() }); |
| | | JArray Fentity = new JArray(); |
| | | foreach (DataRow drN in purDtRows) |
| | | { |
| | | JObject FentityModel = new JObject(); |
| | | FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织 |
| | | FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = drN["FMATERIALNAME"].ToString() });//物料 |
| | | FentityModel.Add("FHQty", drN["FQty"].ToString());//数量 |
| | | FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织 |
| | | FentityModel.Add("FHPOOrderInterID", drN["FID"].ToString());// 采购订单内码:FHPOOrderInterID |
| | | FentityModel.Add("FHPOOrderEntryID", drN["FENTRYID"].ToString()); //采购订单子内码:FHPOOrderEntryID |
| | | FentityModel.Add("FHPOOrderBillNo", drN["FBILLNO"].ToString()); //采购订单号:FHPOOrderBillNo |
| | | FentityModel.Add("FHPOOrderFseq", drN["FSEQ"].ToString()); // |
| | | FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位 |
| | | Fentity.Add(FentityModel); |
| | | } |
| | | model.Add("FEntity", Fentity); |
| | | FinalyResult.Add(model); |
| | | if ((tlmmm >= 20 || tlmmm == _purDt.Rows.Count) && (tlmmm % 20 == 0 || tlmmm == _purDt.Rows.Count)) |
| | | { |
| | | LogHelper.Info("提料计划新增批量执行,记录循环的当前条数" + tlmmm); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["Creator"] = "", |
| | | ["NeedUpDateFields"] = new JArray(), |
| | | ["NeedReturnFields"] = new JArray(), |
| | | ["IsDeleteEntry"] = "false", |
| | | ["SubSystemId"] = "", |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = FinalyResult |
| | | }; |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.BatchSave("paez_PODemandPlan", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | | if (saveIsSuc != "TRUE") |
| | | { |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | } |
| | | FinalyResult = new JArray(); |
| | | } |
| | | tlmmm++; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Info("提料计划跳出:" + ex.Message.ToString()); |
| | | } |
| | | } |
| | | } |
| | | } |