| | |
| | | using Demo.Model.Model; |
| | | using Demo.BillView.PRD; |
| | | using Demo.Model.Model; |
| | | using Demo.Model.Model.PODemandPlan; |
| | | using K3Cloud.Extend.Utils; |
| | | using Kingdee.BOS.Core; |
| | |
| | | //{ |
| | | //锁定后生成日计划用料清单 及 提料计划 |
| | | DayPlanPPBomBillBatch(); |
| | | Extraction(); |
| | | //Extraction(); |
| | | SearchList(); |
| | | this.View.ShowMessage("操作成功"); |
| | | //} |
| | |
| | | |
| | | /// <summary> |
| | | /// 日计划用料清单生成 |
| | | /// </summary> |
| | | /// </summary> |
| | | public void DayPlanPPBomBillBatch() |
| | | { |
| | | //LogService.WriteAsync(entrys); |
| | | //查找到的同批项次 |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | DynamicObjectCollection filterResult = entityDataObjoct.Clone(); |
| | | filterResult.Clear(); |
| | | entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"])).ToList().ForEach(x => filterResult.Add(x)); |
| | | string sqlWhere = " 1=1 "; |
| | | string FDayPlanWorkID = ""; |
| | | string zxSql = ""; |
| | | List<string> zxSqlList = new List<string>(); |
| | | if (filterResult.Count() > 0) |
| | | { |
| | | foreach (var filter in filterResult) |
| | | { |
| | | FDayPlanWorkID += filter["FDayPlanWorkID"].ToString() + ","; |
| | | zxSqlList.Add(string.Format(@"/*dialect*/ |
| | | INSERT INTO Z_SC_TLPLANZXJH (COLUMN1) VALUES ('{0}') |
| | | SELECT * FROM Z_SC_TLPLANZXJH |
| | | INSERT INTO SC_TLPLANZXJH(FID, FDAYPLANID, FCREATEDATE) SELECT *, GETDATE() FROM Z_SC_TLPLANZXJH |
| | | DELETE FROM Z_SC_TLPLANZXJH |
| | | SELECT * FROM SC_TLPLANZXJH", filter["FDayPlanWorkID"])); |
| | | } |
| | | FDayPlanWorkID = FDayPlanWorkID.TrimEnd(','); |
| | | sqlWhere += $"AND t2.FID IN ({FDayPlanWorkID})"; |
| | | } |
| | | DBServiceHelper.ExecuteBatch(Context, zxSqlList); |
| | | Stopwatch sw = new Stopwatch(); |
| | | sw.Start();//开始计时 |
| | | LogHelper.Info("生成日计划用料清单准备数据"); |
| | | //锁定的日计划不生成 |
| | | try |
| | | { |
| | | 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, |
| | | string sql = string.Format(@"/*dialect*/ |
| | | select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,t3.FMOEntrySeq as FMoSeq,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 |
| | |
| | | select distinct FDAYPLANFID from Sc_DayPlanPPBomBillMain where FID IN ( |
| | | select distinct FDAYPLANFID from T_PRD_PICKMTRLDATA) |
| | | ) |
| | | AND {0} |
| | | -- and T4.FMustQty>0 |
| | | -- ( |
| | | -- select FDayPlanFID FROM Sc_DayPlanPPBomBillMain WHERE FID IN ( select distinct FID from Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0) |
| | | -- ) |
| | | " |
| | | ); |
| | | ", |
| | | sqlWhere); |
| | | LogHelper.Info("生成日计划用料清单准备数据sql:" + sql); |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable dt = ds.Tables[0]; |
| | |
| | | FWORKSHOPID = dr["FWORKSHOPID"].ToString(), |
| | | FReplaceGroup = dr["FReplaceGroup"].ToString(), |
| | | FUseRate = dr["FUseRate"].ToString(), |
| | | FIsTDL = dr["FIsTDL"].ToString() |
| | | FIsTDL = dr["FIsTDL"].ToString(), |
| | | FMoSeq = dr["FMoSeq"].ToString(), |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | ModelEnty.Add("FHQtyScrap", _item.FHQtyScrap);//变动损耗率% |
| | | ModelEnty.Add("FMOBILLNO", _item.FMOBILLNO);// |
| | | ModelEnty.Add("FMOENTRYIDINT", _item.FMOENTRYID);// |
| | | ModelEnty.Add("FMoSeq", _item.FMoSeq);// |
| | | ModelEnty.Add("FPPBOMBILLNO", _item.FPPBOMBILLNO);// |
| | | ModelEnty.Add("FPPBOMFSEQINT", _item.FPPBOMFSEQ);// |
| | | ModelEnty.Add("FOwnerTypeId", _item.FOwnerTypeId);// |
| | |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("日计划用料清单+" + ex.Message.ToString()); |
| | | this.View.ShowErrMessage(ex.Message.ToString()); |
| | | } |
| | | } |
| | | |
| | |
| | | LogHelper.Info("[提料计划准备阶段]可用采购订单数据sql:" + sql); |
| | | sql = string.Format(@" |
| | | /*dialect*/ |
| | | SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty,FHPRDORGID FStockOrgId FROM SC_WORKBILLSORTBILLMAIN T1 |
| | | SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty,FHPRDORGID FStockOrgId |
| | | FROM SC_WORKBILLSORTBILLMAIN T1 |
| | | JOIN SC_WORKBILLSORTBILLSUB T2 ON T1.FID=T2.FID |
| | | LEFT JOIN(SELECT T1.FID,max(t2.FMATERIALID)FMATERIALIDMAIN, max(t2.FMoId)FMoId,MAX(FENTRYID) FENTRYID, SUM(convert(decimal(18, 2), FBASENUMERATOR / FBASEDENOMINATOR))FNeedQty, T1.FMATERIALID from T_PRD_PPBOMENTRY T1 |
| | | JOIN T_PRD_PPBOM T2 on t1.FID = t2.FID |