| | |
| | | using Demo.Model.Model.PODemandPlan; |
| | | using K3Cloud.Extend.Utils; |
| | | using Kingdee.BOS.Core; |
| | | using Kingdee.BOS.Core.Bill; |
| | | using Kingdee.BOS.Core.Const; |
| | | using Kingdee.BOS.Core.DynamicForm; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.JSON; |
| | | using Kingdee.BOS.KDThread; |
| | |
| | | base.BarItemClick(e); |
| | | try |
| | | { |
| | | LogHelper.Info("生产计划平台按钮"); |
| | | if (e.BarItemKey.ToUpper() == "BTEXPORT") |
| | | { |
| | | ExportExcel(); |
| | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// button按钮点击事件 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | | public override void ButtonClick(ButtonClickEventArgs e) |
| | | { |
| | | base.ButtonClick(e); |
| | | if (e.Key.ToUpper() == "FTBXNQT") |
| | | { |
| | | try |
| | | { |
| | | List<string> sqlList = new List<string>(); |
| | | string sql = $"truncate table Sc_WorkBillMainXnqt"; |
| | | sqlList.Add(sql); |
| | | sql = $"truncate table Sc_WorkBillSubXnqt"; |
| | | sqlList.Add(sql); |
| | | string columnName = DBServiceHelper.ExecuteScalar<string>(Context, "/*dialect*/ select stuff((select ',' + name from syscolumns Where id = object_Id('Sc_WorkBillMainXnqt') for xml path('')),1,1,'') as name ", ""); |
| | | sql = $"insert into Sc_WorkBillMainXnqt({columnName}) select {columnName} from Sc_WorkBillSortBillMain"; |
| | | LogHelper.Info("测试1:" + sql); |
| | | sqlList.Add(sql); |
| | | columnName = DBServiceHelper.ExecuteScalar<string>(Context, "/*dialect*/ select stuff((select ',' + name from syscolumns Where id = object_Id('Sc_WorkBillSubXnqt') for xml path('')),1,1,'') as name ", ""); |
| | | sql = $"insert into Sc_WorkBillSubXnqt({columnName}) select {columnName} from Sc_WorkBillSortBillSub"; |
| | | LogHelper.Info("测试1:" + sql); |
| | | |
| | | sqlList.Add(sql); |
| | | sql = $"update Sc_WorkBillSubXnqt set FComplete=''"; |
| | | sqlList.Add(sql); |
| | | |
| | | DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | this.View.ShowErrMessage(ex.Message); |
| | | return; |
| | | } |
| | | this.View.ShowMessage("操作成功"); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 行双击 跳出齐套分析明细列表 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | |
| | | //生产计划平台拖期明细跳转 |
| | | formPa.FormId = "paez_TardinessDetails"; |
| | | formPa.CustomParams.Add("FID", Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString())); |
| | | this.View.ShowForm(formPa); |
| | | } |
| | | else if (e.ColKey == "FQTYLS") |
| | | { |
| | | //生产计划平台 |
| | | string pageId = Guid.NewGuid().ToString(); |
| | | BillShowParameter showParameter = new BillShowParameter(); |
| | | showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill"; |
| | | showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage; |
| | | showParameter.PageId = pageId; |
| | | showParameter.Status = OperationStatus.EDIT; |
| | | // 传入需要修改的日计划工单内码, |
| | | showParameter.PKey = Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString()); |
| | | this.View.ShowForm(showParameter); |
| | | |
| | | } |
| | | else |
| | | { |
| | | //齐套分析明细列表跳转 |
| | | formPa.FormId = "paez_CompleteAnalysisDetail"; |
| | | formPa.CustomParams.Add("FHICMOInterID", Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString())); |
| | | this.View.ShowForm(formPa); |
| | | } |
| | | this.View.ShowForm(formPa); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 查看虚拟齐套 |
| | |
| | | { |
| | | Stopwatch sw = new Stopwatch(); |
| | | sw.Start();//开始计时 |
| | | LogHelper.Info("齐套分析开始准备数据:" + sw.Elapsed); |
| | | //清空齐套临时表 |
| | | DBServiceHelper.Execute(Context, "/*dialect*/ delete JIT_MOMaterReadysBill "); |
| | | //更新状态 |
| | |
| | | int i = 1; |
| | | //创建字典 用于储存物料 + 占用数量 |
| | | Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>(); |
| | | LogHelper.Info("齐套分析准备数据完成:" + sw.Elapsed); |
| | | foreach (var item in DatePlanList) |
| | | { |
| | | |
| | | //筛选出当日计划数据 |
| | | var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList(); |
| | | foreach (var _item in _BomList) |
| | |
| | | decimal _fLackCount = _item.PlanCount > sjkcList.FBASEQTY ? (_item.PlanCount - sjkcList.FBASEQTY) : 0;//缺料数量 |
| | | foreach (var Inventory in _ListInventory) |
| | | { |
| | | |
| | | if (need == 0) |
| | | break; |
| | | decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need;//齐套数量 |
| | |
| | | { |
| | | 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),(FNumerator/FDenominator) *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 |
| | | 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 |
| | | 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 |
| | |
| | | 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 |
| | | left join T_BD_DEPARTMENT td on t3.FWORKSHOPID=td.FDEPTID |
| | | WHERE t1.FEntryID not in |
| | | ( |
| | | select distinct FDAYPLANFID from Sc_DayPlanPPBomBillMain where FID IN ( |
| | | select distinct FDAYPLANFID from T_PRD_PICKMTRLDATA) |
| | | ) |
| | | -- and T4.FMustQty>0 |
| | | -- ( |
| | | -- select FDayPlanFID FROM Sc_DayPlanPPBomBillMain WHERE FID IN ( select distinct FID from Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0) |
| | | -- ) |
| | | " |
| | | ); |
| | | LogHelper.Info("生成日计划用料清单准备数据sql:" + sql); |
| | |
| | | FIssueType = dr["FIssueType"].ToString(), |
| | | FMaterialType = dr["FMaterialType"].ToString(), |
| | | FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(), |
| | | FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString() |
| | | FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(), |
| | | FWORKSHOPID = dr["FWORKSHOPID"].ToString(), |
| | | FReplaceGroup = dr["FReplaceGroup"].ToString(), |
| | | FUseRate = dr["FUseRate"].ToString() |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | ModelEnty.Add("FMOID", _item.FMOID);// |
| | | ModelEnty.Add("FISSUETYPE", _item.FIssueType);// |
| | | ModelEnty.Add("FMaterialType", _item.FMaterialType);// |
| | | // ModelEnty.Add("FSEQ", FSEQ);// |
| | | ModelEnty.Add("FWORKSHOPID", new JObject() { ["Fnumber"] = _item.FWORKSHOPID });// |
| | | ModelEnty.Add("FReplaceGroup", _item.FReplaceGroup);// |
| | | ModelEnty.Add("FUseRate",_item.FUseRate);// |
| | | Entry.Add(ModelEnty); |
| | | FSEQ++; |
| | | |
| | | } |
| | | model.Add("FEntity", Entry); |
| | | |
| | |
| | | var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | | if (saveIsSuc == "TRUE") |
| | | { |
| | | var Success = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString().TrimStart('{').TrimEnd('}'); |
| | | var allList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Success); |
| | | List<string> ls = new List<string>(); |
| | | foreach (var it in allList) |
| | | { |
| | | it.TryGetValue("Id", out string value); |
| | | ls.Add(value); |
| | | } |
| | | var resultAA = String.Join(",", ls.ToArray()); |
| | | string resSql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set Sc_WorkBillSortBillSub.FDAYPLANPPBOMBILLNO = Sc_DayPlanPPBomBillMain.FBILLNO from Sc_WorkBillSortBillSub join Sc_DayPlanPPBomBillMain on Sc_WorkBillSortBillSub.FEntryID = Sc_DayPlanPPBomBillMain.FDayPlanFID where Sc_DayPlanPPBomBillMain.FID in ({0})", resultAA); |
| | | DBServiceHelper.Execute(Context, resSql); |
| | | } |
| | | if (saveIsSuc != "TRUE") |
| | | { |
| | | LogHelper.Error("日计划用料清单列表生成失败:" + jsonRoot.ToString()); |
| | |
| | | _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList(); |
| | | if (_PurchaseInventory.Count == 0) |
| | | { |
| | | LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId); |
| | | //LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId); |
| | | break; |
| | | } |
| | | |
| | |
| | | //{ |
| | | foreach (var Purchase in _PurchaseInventory) |
| | | { |
| | | LogHelper.Info("采购订单号测试:" + Purchase.FBillNo); |
| | | //LogHelper.Info("采购订单号测试:" + Purchase.FBillNo); |
| | | //LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY); |
| | | if (Purchase.FQTY >= NeedQty) |
| | | { |