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; namespace Demo.TimedTaskPlugIn.PRD { [Description("日计划用料清单执行计划")] [HotUpdate] public class DayPlanPPBomBillTimeTask : Kingdee.BOS.Contracts.IScheduleService { public void Run(Context ctx, Schedule schedule) { CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); try { string sql = string.Format(@" /*dialect*/ select t1.FID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY FROM Sc_WorkBillSortBillSub t1 JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID JOIN T_BD_UNIT T8 ON T4.FUNITID = T8.FUNITID LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FID=T9.FDayPlanFID join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID where DATEDIFF(DAY,GETDATE(),FHMASTERDATE)=2 " ); DataSet ds = DBServiceHelper.ExecuteDataSet(ctx, sql); DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { DataView dv = dt.DefaultView; DataTable _dt = dv.ToTable(true, "FID"); foreach (DataRow dr in _dt.Rows) { DataRow[] DataRow = dt.Select("FID =" + dr[0]); if (DataRow[0]["FBillNo"].ToString() != "") { //删除原有日计划用料清单 JObject deletemodel = new JObject(); deletemodel.Add("Numbers", DataRow[0]["FBillNo"].ToString()); JObject _saveObj = JObject.Parse(cloudClient.Delete("Paez_Sc_DayPlanPPBomBill", deletemodel.ToString())); string _saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (_saveIsSuc != "TRUE") LogHelper.Error(_saveIsSuc); } JObject model = new JObject(); model.Add("FHDate", DateTime.Now); model.Add("FOrgId", new JObject() { ["Fnumber"] = DataRow[0]["FORGNUMBER"].ToString() });//发料组织 model.Add("FHMaterID", new JObject() { ["Fnumber"] = DataRow[0]["FNUMBER"].ToString() });//物料 model.Add("FHWorkDate", DataRow[0]["FHMASTERDATE"].ToString());//日工单日期 FHWorkDate model.Add("FHQty", DataRow[0]["FHQTY"].ToString());//主产品数量:FHQty model.Add("FHUnitID", new JObject() { ["Fnumber"] = DataRow[0]["FUNITNUMBER"].ToString() });//单位:FHUnitID model.Add("FDayPlanFID", DataRow[0]["FID"].ToString());//日计划工单内码 JArray Entry = new JArray(); for (int i = 0; i < DataRow.Count(); i++) { JObject ModelEnty = new JObject(); ModelEnty.Add("FHMaterSubID", new JObject() { ["Fnumber"] = DataRow[i]["FNUMBER2"].ToString() });//子物料FHMaterSubID ModelEnty.Add("FHUnitSubID", new JObject() { ["Fnumber"] = DataRow[i]["FUNITNUMBER2"].ToString() });//单位FHUnitSubID ModelEnty.Add("FHQtyMust", DataRow[i]["FHQtyMust"].ToString());//应发数量FHQtyMust ModelEnty.Add("FHQtySub", DataRow[i]["FHQtyMust"].ToString());//数量FHQtySub ModelEnty.Add("FHPPBomInterID", DataRow[i]["FPPBOM"].ToString());//用料清单主内码FHPPBomInterID ModelEnty.Add("FHPPBomEntryID", DataRow[i]["FENTRYID"].ToString());//用料清单子内码FHPPBomEntryID ModelEnty.Add("FHSourceID", new JObject() { ["Fnumber"] = DataRow[i]["FHSOURCENUMBER"].ToString() });//生产资源FHSourceID ModelEnty.Add("FNumerator", DataRow[i]["FNumerator"].ToString());//分母 ModelEnty.Add("FDenominator", DataRow[i]["FDenominator"].ToString());//分子 ModelEnty.Add("FFIXSCRAPQTY", DataRow[i]["FFIXSCRAPQTY"].ToString());//固定损耗 ModelEnty.Add("FHQtyScrap", DataRow[i]["FSCRAPRATE"].ToString());//变动损耗率% Entry.Add(ModelEnty); } model.Add("FEntity", Entry); JObject jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "true", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; var result = cloudClient.Save("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString()); JObject saveObj = JObject.Parse(result); string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (saveIsSuc != "TRUE") LogHelper.Error(saveIsSuc); } } } catch (System.Exception ex) { LogHelper.Error(ex.Message.ToString()); } } } }