| | |
| | | /// <summary> |
| | | /// 日计划用料清单生成 |
| | | /// </summary> |
| | | public void DayPlanPPBomBill() |
| | | { |
| | | Stopwatch sw = new Stopwatch(); |
| | | sw.Start();//开始计时 |
| | | LogHelper.Info("批量,生成日计划用料清单准备数据"); |
| | | //锁定的日计划不生成 |
| | | try |
| | | { |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FEntryID,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,T9.FID AS DayPlanFID |
| | | 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 |
| | | LEFT JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID |
| | | LEFT JOIN T_BD_UNIT T8 ON T4.FUNITID = T8.FUNITID |
| | | LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID |
| | | LEFT join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID |
| | | LEFT join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID |
| | | WHERE t1.FHQTY>0 |
| | | " |
| | | ); |
| | | LogHelper.Info("批量,生成日计划用料清单准备数据sql:" + sql); |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable dt = ds.Tables[0]; |
| | | List<DayPlanMaterial> DayPlanMaterial = new List<DayPlanMaterial>(); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | foreach (DataRow dr in dt.Rows) |
| | | { |
| | | DayPlanMaterial.Add(new Demo.Model.Model.DayPlanMaterial |
| | | { |
| | | FID = dr["DayPlanFID"].ToString(), |
| | | FEntryID = dr["FEntryID"].ToString(), |
| | | FHDate = DateTime.Now.ToString(), |
| | | FOrgId = dr["FORGNUMBER"].ToString(), |
| | | FHMaterID = dr["FNUMBER"].ToString(), |
| | | FHWorkDate = dr["FHMASTERDATE"].ToString(), |
| | | FHQty = dr["FHQTY"].ToString(), |
| | | FHUnitID = dr["FUNITNUMBER"].ToString(), |
| | | FDayPlanFID = dr["FEntryID"].ToString(), |
| | | FHMaterSubID = dr["FNUMBER2"].ToString(), |
| | | FHUnitSubID = dr["FUNITNUMBER2"].ToString(), |
| | | FHQtyMust = dr["FHQtyMust"].ToString(), |
| | | FHQtySub = dr["FHQtyMust"].ToString(), |
| | | FHPPBomInterID = dr["FPPBOM"].ToString(), |
| | | FHPPBomEntryID = dr["FENTRYID"].ToString(), |
| | | FHSourceID = dr["FHSOURCENUMBER"].ToString(), |
| | | FNumerator = dr["FNumerator"].ToString(), |
| | | FDenominator = dr["FDenominator"].ToString(), |
| | | FFIXSCRAPQTY = dr["FFIXSCRAPQTY"].ToString(), |
| | | FHQtyScrap = dr["FSCRAPRATE"].ToString(), |
| | | }); |
| | | } |
| | | LogHelper.Info($"批量,日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | | var fidList = DayPlanMaterial.Select(x => x.FEntryID).Distinct().ToList(); |
| | | foreach (var item in fidList) |
| | | { |
| | | var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).ToList(); |
| | | JObject model = new JObject(); |
| | | model.Add("FHDate", DateTime.Now); |
| | | model.Add("FOrgId", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FOrgId });//发料组织 |
| | | model.Add("FHMaterID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHMaterID });//物料 |
| | | model.Add("FHWorkDate", _DayPlanMaterial[0].FHWorkDate);//日工单日期 FHWorkDate |
| | | model.Add("FHQty", _DayPlanMaterial[0].FHQty);//主产品数量:FHQty |
| | | model.Add("FHUnitID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHUnitID });//单位:FHUnitID |
| | | model.Add("FDayPlanFID", _DayPlanMaterial[0].FDayPlanFID);//日计划工单内码 |
| | | JArray Entry = new JArray(); |
| | | foreach (var _item in _DayPlanMaterial) |
| | | { |
| | | JObject ModelEnty = new JObject(); |
| | | ModelEnty.Add("FHMaterSubID", new JObject() { ["Fnumber"] = _item.FHMaterSubID });//子物料FHMaterSubID |
| | | ModelEnty.Add("FHUnitSubID", new JObject() { ["Fnumber"] = _item.FHUnitSubID });//单位FHUnitSubID |
| | | ModelEnty.Add("FHQtyMust", _item.FHQtyMust);//应发数量FHQtyMust |
| | | ModelEnty.Add("FHQtySub", _item.FHQtySub);//数量FHQtySub |
| | | ModelEnty.Add("FHPPBomInterID", _item.FHPPBomInterID);//用料清单主内码FHPPBomInterID |
| | | ModelEnty.Add("FHPPBomEntryID", _item.FHPPBomEntryID);//用料清单子内码FHPPBomEntryID |
| | | ModelEnty.Add("FHSourceID", new JObject() { ["Fnumber"] = _item.FHSourceID });//生产资源FHSourceID |
| | | ModelEnty.Add("FNumerator", _item.FNumerator);//分母 |
| | | ModelEnty.Add("FDenominator", _item.FDenominator);//分子 |
| | | ModelEnty.Add("FDwyl", Convert.ToDecimal(_item.FNumerator) / Convert.ToDecimal(_item.FDenominator));//单位用料 |
| | | ModelEnty.Add("FFIXSCRAPQTY", _item.FFIXSCRAPQTY);//固定损耗 |
| | | ModelEnty.Add("FHQtyScrap", _item.FHQtyScrap);//变动损耗率% |
| | | Entry.Add(ModelEnty); |
| | | } |
| | | model.Add("FEntity", Entry); |
| | | //if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID)) |
| | | // model.Add("FID", _DayPlanMaterial[0].FID); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["Creator"] = "", |
| | | ["NeedUpDateFields"] = new JArray(), |
| | | ["NeedReturnFields"] = new JArray(), |
| | | ["IsDeleteEntry"] = "true", |
| | | ["SubSystemId"] = "", |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = model |
| | | }; |
| | | |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | 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(jsonRoot.ToString()); |
| | | |
| | | } |
| | | } |
| | | } |
| | | sw.Stop();//结束计时 |
| | | LogHelper.Info("批量,生成日计划用料清单运行总时长:" + sw.Elapsed); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("批量,生成日计划用料清单+" + ex.Message.ToString()); |
| | | } |
| | | } |
| | | public void DayPlanPPBomBillBatch() |
| | | { |
| | | Stopwatch sw = new Stopwatch(); |
| | |
| | | { |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(t4.FMustQty/T3.FQTY) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType,td.FNUMBER as FWORKSHOPID,t4.FReplaceGroup,t4.FUseRate |
| | | select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(t4.FMustQty/T3.FQTY) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType,td.FNUMBER as FWORKSHOPID,t4.FReplaceGroup,isnull(ttt.FrowCount,0)FIsTDL,t4.FUseRate |
| | | 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 |
| | | left join |
| | | ( |
| | | select FREPLACEGROUP,COUNT(*) FrowCount,FID from T_PRD_PPBOMENTRY |
| | | GROUP BY FREPLACEGROUP,FID |
| | | having count(*) >1 |
| | | ) ttt on t4.FID = ttt.FID and t4.FREPLACEGROUP =ttt.FREPLACEGROUP |
| | | JOIN T_PRD_PPBOMENTRY_C Tc ON T4.FENTRYID=Tc.FENTRYID |
| | | join T_ORG_Organizations torg ON tc.FOWNERID = torg.FORGID |
| | | JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID |
| | |
| | | FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(), |
| | | FWORKSHOPID = dr["FWORKSHOPID"].ToString(), |
| | | FReplaceGroup = dr["FReplaceGroup"].ToString(), |
| | | FUseRate = dr["FUseRate"].ToString() |
| | | FUseRate = dr["FUseRate"].ToString(), |
| | | FIsTDL = dr["FIsTDL"].ToString() |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | JArray Fentity = new JArray(); |
| | | foreach (var item in fidList) |
| | | { |
| | | var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).ToList(); |
| | | var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).OrderBy(x => Convert.ToInt32(x.FReplaceGroup)).ToList(); |
| | | JObject model = new JObject(); |
| | | |
| | | if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID)) |
| | |
| | | ModelEnty.Add("FMaterialType", _item.FMaterialType);// |
| | | ModelEnty.Add("FWORKSHOPID", new JObject() { ["Fnumber"] = _item.FWORKSHOPID });// |
| | | ModelEnty.Add("FReplaceGroup", _item.FReplaceGroup);// |
| | | ModelEnty.Add("FUseRate",_item.FUseRate);// |
| | | ModelEnty.Add("FUseRate", _item.FUseRate);// |
| | | ModelEnty.Add("FIsTDL", Convert.ToInt32(_item.FIsTDL) > 0 ? 1 : 0);// |
| | | Entry.Add(ModelEnty); |
| | | FSEQ++; |
| | | } |