using Demo.Model.Model; using Kingdee.BOS; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using ZD.Cloud.WebApi; using ZD.Share.Common; namespace Demo.BillView.PRD { [Description("[日计划工单] 列表插件"), HotUpdate] public class Pro_DayPlanList : AbstractListPlugIn { //点击按钮触发 public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); //关闭 if (e.BarItemKey.Equals("BTNCLOSE")) {                 //获取选择记录                 ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo; //读取ID,放到数组 string[] ID = selectRows.GetPrimaryKeyValues(); string FID = ""; //没有选择行提示 if (ID.Length == 0) {                     //如果选择的是0,即没有选择行记录,弹窗报错,返回                     this.View.ShowMessage("请选择单据!", MessageBoxType.Notice); return; } else { //如果点击成功,循环ID for (int i = 0; i < ID.Length; i++) { FID = FID + ID[i].ToString() + ","; } FID = FID.Substring(0, FID.Length - 1); string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'E',FHCloseMan = '{Context.UserId}',FHCloseDate = GETDATE() where FID in ({FID})"; ////LogHelper.Info(sql); DBServiceHelper.Execute(Context, sql); this.View.ShowMessage("操作成功"); } } //反关闭 else if (e.BarItemKey.Equals("BTNCANCELCLOSE")) {                 //获取选择记录                 ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo; //读取ID,放到数组 string[] ID = selectRows.GetPrimaryKeyValues(); string FID = ""; //没有选择行提示 if (ID.Length == 0) {                     //如果选择的是0,即没有选择行记录,弹窗报错,返回                     this.View.ShowMessage("请选择单据!", MessageBoxType.Notice); return; } else { //如果点击成功,循环ID for (int i = 0; i < ID.Length; i++) { FID = FID + ID[i].ToString() + ","; } FID = FID.Substring(0, FID.Length - 1); //验证 关闭订单 //验证所选订单是否存在相同数据 生产订单号+生产订单明细行号 string errmsg = ""; string fbillno = ""; string yzSql = string.Format(@"/*dialect*/ SELECT FBILLNO FROM SC_WORKBILLSORTBILLMAIN WHERE FSCORDERNO+CONVERT(VARCHAR,FSRCBILLENTRYSEQ) IN ( SELECT FSCORDERNO+CONVERT(VARCHAR,FSRCBILLENTRYSEQ) FROM SC_WORKBILLSORTBILLMAIN WHERE FID IN ({0}) GROUP BY FSCORDERNO,FSRCBILLENTRYSEQ HAVING COUNT(*)>1 )", FID); DataTable dataTable = DBServiceHelper.ExecuteDataSet(Context, yzSql).Tables[0]; if (dataTable.Rows.Count > 0) { errmsg += "所选订单中存在相同生产订单和明细行号数据,订单号:"; foreach (DataRow dr in dataTable.Rows) { errmsg += dr["FBILLNO"].ToString(); fbillno += $"'{dr["FBILLNO"].ToString()}',"; } } yzSql = string.Format(@"/*dialect*/ SELECT A.FBILLNO FROM SC_WORKBILLSORTBILLMAIN A JOIN (SELECT * FROM SC_WORKBILLSORTBILLMAIN WHERE FDOCUMENTSTATUS <>'E') B ON A.FSCORDERNO=B.FSCORDERNO AND A.FSRCBILLENTRYSEQ=B.FSRCBILLENTRYSEQ WHERE A.FID IN ({0}) ", FID); dataTable = DBServiceHelper.ExecuteDataSet(Context, yzSql).Tables[0]; if (dataTable.Rows.Count > 0) { errmsg += "\n" + "所选订单中存在生产订单和明细行号关闭后数据重复,订单号:"; foreach (DataRow dr in dataTable.Rows) { errmsg += dr["FBILLNO"].ToString(); fbillno += $"'{dr["FBILLNO"].ToString()}',"; } } string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'C',FHCloseMan = '',FHCloseDate = NULL where FID in ({FID})"; if (fbillno.Length > 0) { fbillno = fbillno.Substring(0, fbillno.Length - 1); sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'C',FHCloseMan = '',FHCloseDate = NULL where FID in ({FID}) AND FBILLNO NOT IN ({fbillno})"; } ////LogHelper.Info(sql); DBServiceHelper.Execute(Context, sql); if (errmsg != "") { this.View.ShowMessage("部分单据操作成功\n" + errmsg); return; } this.View.ShowMessage("操作成功"); } } //生成领料单 else if (e.BarItemKey.Equals("BTNPUSH")) { pushPickMtrl(); } else if (e.BarItemKey.Equals("BTNOPENPURORDER")) { //OpenPurOrder(); ReleaseProOrder(); } } public void pushPickMtrl() { try { //获取选择记录 ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo; if (!(selectRows.Count == 1)) { this.View.ShowMessage("请选择单行数据!", MessageBoxType.Notice); return; } List fidList = selectRows.GetEntryPrimaryKeyValues().ToList(); string fentryids = string.Join(",", fidList); List updateSql = new List(); foreach (var item in fidList) { //var fReceveBillID = DBServiceHelper.ExecuteScalar(Context, $"/*dialect*/select fReceveBillID from Sc_WorkBillSortBillSub where fentryid = {item}", 0); //if (fReceveBillID > 0)//已生成生产领料单 不继续重复添加 //{ // this.View.ShowMessage("已生成生产领料单!", MessageBoxType.Notice); // return; //} string sql = $"/*dialect*/ exec proc_jit_DayPlanPushPickmtrl {item}"; List prd_DayPlanPushPickMatrl = new List(); prd_DayPlanPushPickMatrl = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList(); if (prd_DayPlanPushPickMatrl.Count == 0) { this.View.ShowMessage("没有数据可生成生产领料单!", MessageBoxType.Notice); return; } //var fDate = prd_DayPlanPushPickMatrl.FirstOrDefault().FDATE; var FPrdOrgNumber = prd_DayPlanPushPickMatrl.FirstOrDefault().FOrgNumber; JObject model = new JObject(); string fTypeName = "SCLLD01_SYS";//普通生产领料 model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = fTypeName }); //单据类型 model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //日期:FDate(必填项) model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = FPrdOrgNumber });//生产组织:FPrdOrgId(必填项) model.Add("FStockOrgId", new JObject() { ["Fnumber"] = FPrdOrgNumber });//发料组织:FStockOrgId(必填项) model.Add("FCreatorId", new JObject() { ["FUserID"] = Context.UserId }); //创建人 model.Add("FModifierId", new JObject() { ["FUserID"] = Context.UserId }); //修改人 JArray Fentity = new JArray(); foreach (var pickMatrl in prd_DayPlanPushPickMatrl) { string vd = "FF" + pickMatrl.FFLEXID;//维度值 sql = $"SELECT FNUMBER FROM V_BAS_FLEXVALUESENTRY WHERE FENTRYID in (SELECT {vd} FROM dbo.T_BAS_FLEXVALUESDETAIL WHERE FID = {pickMatrl.FStockLocId}) "; string vdNumber = DBServiceHelper.ExecuteScalar(Context, sql, "");//仓位编码 JObject FentityModel = new JObject(); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = pickMatrl.FNUMBER });//物料编码:FMaterialId(必填项) FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = pickMatrl.FBaseUnitNumber });//单位:FUnitID(必填项) FentityModel.Add("FBaseUnitId", new JObject() { ["Fnumber"] = pickMatrl.FBaseUnitNumber });//基本单位:FBaseUnitId(必填项) FentityModel.Add("FStockUnitId", new JObject() { ["Fnumber"] = pickMatrl.FBaseUnitNumber });//主库存单位:FStockUnitId(必填项) FentityModel.Add("FStockId", new JObject() { ["Fnumber"] = pickMatrl.FStockNumber });//仓库:FStockId(必填项) FentityModel.Add("FStockStatusId", new JObject() { ["Fnumber"] = pickMatrl.FStockStatusNumber });//库存状态:FStockStatusId(必填项) FentityModel.Add("FLot", new JObject() { ["Fnumber"] = pickMatrl.FLOTNUMBER });//批号 FentityModel.Add("FMOBILLNO", pickMatrl.FMOBILLNO); //生产订单编号:FMoBillNo(必填项) FentityModel.Add("FOwnerTypeId", pickMatrl.FOwnerTypeId); //货主类型:FOwnerTypeId(必填项) FentityModel.Add("FOwnerId", new JObject() { ["Fnumber"] = pickMatrl.FOwnerTypeNumber }); //货主:FOwnerId(必填项) FentityModel.Add("FKeeperTypeId", pickMatrl.FKeeperTypeId);//保管者类型:FKeeperTypeId(必填项) FentityModel.Add("FKeeperId", new JObject() { ["Fnumber"] = pickMatrl.FKeeperTypeNumber }); //保管者:FKeeperId(必填项) FentityModel.Add("FParentOwnerTypeId", pickMatrl.FOwnerTypeId); //产品货主类型:FParentOwnerTypeId(必填项) FentityModel.Add("FParentOwnerId", new JObject() { ["Fnumber"] = pickMatrl.FOwnerTypeNumber }); //产品货主:FParentOwnerId(必填项) FentityModel.Add("FParentMaterialId", new JObject() { ["Fnumber"] = pickMatrl.FParentMaterialNumber }); //产品编码:FParentMaterialId(必填项) FentityModel.Add("FAppQty", pickMatrl.FACTBASEQTY); //申请数量:FAppQty FentityModel.Add("FActualQty", pickMatrl.FACTBASEQTY); //实发数量:FActualQty FentityModel.Add("FMoEntryId", pickMatrl.FMOENTRYID); FentityModel.Add("FMoId", pickMatrl.FMOID); /////////////////////////////////源单 FentityModel.Add("FPPBomBillNo", pickMatrl.FBillNo); //用料清单编号:FPPBomBillNo FentityModel.Add("FPPBomEntryId", pickMatrl.FPPBOMFENTRYID); FentityModel.Add("FSrcBillType", "PRD_PPBOM"); FentityModel.Add("FSrcBillNo", pickMatrl.FBillNo); FentityModel.Add("FEntrySrcInterId", pickMatrl.FPPBOMFID); FentityModel.Add("FEntrySrcEnteryId", pickMatrl.FPPBOMFENTRYID); FentityModel.Add("FEntrySrcEntrySeq", pickMatrl.FSEQ); /////////////////////////////////源单 /////////////////////////////////需求单据 FentityModel.Add("FREQSRC", pickMatrl.FREQSRC); FentityModel.Add("FREQBILLID", pickMatrl.FSALEORDERID); FentityModel.Add("FREQBILLNO", pickMatrl.FSALEORDERNO); FentityModel.Add("FREQENTRYID", pickMatrl.FSALEORDERENTRYID); FentityModel.Add("FREQENTRYSEQ", pickMatrl.FSALEORDERENTRYSEQ); FentityModel.Add("FGROUPROW", "c8f68be4-9284-a153-11ed-00bc5a29e6ca"); /////////////////////////////////需求单据 FentityModel.Add("FDAYPLANBILLNO", pickMatrl.FDAYPLANBILLNO); FentityModel.Add("FDayPlanFseq", pickMatrl.FDayPlanFseq); FentityModel.Add("FDayPlanFentryId", pickMatrl.FDayPlanFentryId); FentityModel.Add("FDayPlanFid", pickMatrl.FDayPlanFid); FentityModel.Add("FSpreadBillNo", pickMatrl.FSpreadBillNo); JObject vdmodel = new JObject(); vdmodel.Add("FNumber", vdNumber); FentityModel.Add("FStockLocId", new JObject() { ["FSTOCKLOCID__" + vd] = vdmodel });//仓位 JArray Fentity2 = new JArray(); JObject FentityModel2 = new JObject(); FentityModel2.Add("FEntity_Link_FFlowId", "81119477-4778-4d0b-94b9-1c43a1c1f768"); FentityModel2.Add("FEntity_Link_FFlowLineId", "5"); FentityModel2.Add("FEntity_Link_FRuleId", "PRD_PPBOM2PICKMTRL_NORMAL"); FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_PPBOMENTRY"); FentityModel2.Add("FEntity_Link_FSBillId", pickMatrl.FPPBOMFID); FentityModel2.Add("FEntity_Link_FSId", pickMatrl.FPPBOMFENTRYID); FentityModel2.Add("FEntity_Link_FBaseActualQtyOld", pickMatrl.FACTBASEQTY); FentityModel2.Add("FEntity_Link_FBaseActualQty", pickMatrl.FACTBASEQTY); Fentity2.Add(FentityModel2); FentityModel.Add("FEntity_Link ", Fentity2); FentityModel.Add("FBFLowId", new JObject() { ["FID"] = "81119477-4778-4d0b-94b9-1c43a1c1f768" });//业务流程:FBFLowId Fentity.Add(FentityModel); //业务流程图:FEntity_Link_FFlowId //推进路线:FEntity_Link_FFlowLineId //转换规则:FEntity_Link_FRuleId //源单表内码:FEntity_Link_FSTableId //源单表:FEntity_Link_FSTableName //源单内码:FEntity_Link_FSBillId //源单分录内码:FEntity_Link_FSId //原始携带量:FEntity_Link_FBaseActualQtyOld //修改携带量:FEntity_Link_FBaseActualQty } model.Add("FEntity", Fentity); //明细信息 JObject jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); var _result = cloudClient.Save("PRD_PickMtrl", jsonRoot.ToString()); var _saveObj = JObject.Parse(_result); var saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (saveIsSuc != "TRUE") { this.View.ShowErrMessage("领料单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); return; } var fBillNo = _saveObj["Result"]["Number"].ToString(); var fID = _saveObj["Result"]["Id"].ToString(); //updateSql.Add($"/*dialect*/ update Sc_WorkBillSortBillSub set FReceveBillNo = '{fBillNo}', FReceveBillID = '{fID}' where FEntryID = {item}"); //DBServiceHelper.ExecuteBatch(Context, updateSql); string pageId = Guid.NewGuid().ToString(); BillShowParameter showParameter = new BillShowParameter(); showParameter.FormId = "PRD_PickMtrl"; showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage; showParameter.PageId = pageId; showParameter.Status = OperationStatus.EDIT; // 传入需要修改的销售订单内码,演示代码直接固定写死为100001 showParameter.PKey = fID; this.View.ShowForm(showParameter); } } catch (Exception ex) { this.View.ShowErrMessage(ex.Message.ToString()); } //this.View.ShowMessage("领料单生成成功"); } public void OpenPurOrder() { //获取选择记录 ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo; if (selectRows.Count == 0) { this.View.ShowMessage("请选择数据!", MessageBoxType.Notice); return; } List fidList = selectRows.GetEntryPrimaryKeyValues().ToList(); string fentryids = string.Join(",", fidList); string sql = string.Format("/*dialect*/ select distinct FID from T_PRD_PICKMTRLDATA where FDAYPLANFENTRYID in ({0})", fentryids); DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; List pickFidList = new List(); pickFidList = dt.AsEnumerable().Select(d => d.Field("FID").ToString()).ToList(); string purfentryids = string.Join(",", pickFidList); //foreach (DataRow dr in dt.Rows) //{ // purfentryids += dr["FID"].ToString() + ","; //} //purfentryids = purfentryids.Substring(0, purfentryids.Length - 1); string fldName = "FID"; IRegularFilterParameter filterParameter = new ListRegularFilterParameter(); filterParameter.Filter = string.Format(" {0} IN ({1}) ", fldName, purfentryids); filterParameter.SelectEntitys = new List() { "FEntry" }; var listTrackParameter = new ListTrackBillShowParameter(); listTrackParameter.FormId = "PRD_PickMtrl"; listTrackParameter.PageId = Guid.NewGuid().ToString(); listTrackParameter.IsShowFilter = false; listTrackParameter.ListFilterParameter = filterParameter; this.View.ShowForm(listTrackParameter); } public void ReleaseProOrder() { ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo; if (selectRows.Count == 0) return; List fidList = selectRows.GetEntryPrimaryKeyValues().ToList(); string fentryId = string.Join(",", fidList); //生成生产订单 string sql = $"/*dialect*/ exec proc_jit_DayPlanAduitAddNemMoOrder {fentryId}"; DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; if (dt.Rows[0][0].ToString().Contains("成功")) return; foreach (DataRow dr in dt.Rows) { JObject model = new JObject(); model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = dr["FBillTypeNumber"].ToString() }); //单据类型 model.Add("FCreatorId", new JObject() { ["FUserID"] = Context.UserId }); //创建人 model.Add("FModifierId", new JObject() { ["FUserID"] = Context.UserId }); //修改人 model.Add("FDate", dr["FDate"].ToString()); model.Add("FBILLNO", dr["FSpreadBillNo"].ToString()); model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); model.Add("FWorkShopID0", new JObject() { ["Fnumber"] = dr["FWorkShopNumber"].ToString() }); model.Add("FOwnerTypeId", dr["FOwnerTypeId"].ToString()); model.Add("FIsRework", dr["FIsRework"].ToString()); model.Add("FBusinessType", dr["FBusinessType"].ToString()); model.Add("FTrustteed", dr["FTrustteed"].ToString()); model.Add("FIsEntrust", dr["FIsEntrust"].ToString()); model.Add("FPPBOMType", dr["FPPBOMType"].ToString()); model.Add("FIssueMtrl", dr["FIssueMtrl"].ToString()); JArray Fentity = new JArray(); JObject FentityModel = new JObject(); FentityModel.Add("FProductType", dr["FProductType"].ToString()); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = dr["FMATERIALNUMBER"].ToString() }); FentityModel.Add("FWorkShopID", new JObject() { ["Fnumber"] = dr["FWorkShopNumber"].ToString() }); FentityModel.Add("FUnitId", new JObject() { ["Fnumber"] = dr["FUnitNumber"].ToString() }); FentityModel.Add("FQty", dr["FQty"].ToString()); FentityModel.Add("FYieldQty", dr["FYieldQty"].ToString()); FentityModel.Add("FPlanStartDate", dr["FPlanStartDate"].ToString()); FentityModel.Add("FPlanFinishDate", dr["FPlanFinishDate"].ToString()); FentityModel.Add("FRequestOrgId", new JObject() { ["Fnumber"] = dr["FRequestOrgNumber"].ToString() }); FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = dr["FBomNumber"].ToString() }); FentityModel.Add("FISBACKFLUSH", dr["FISBACKFLUSH"].ToString()); FentityModel.Add("FStockInOrgId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FBaseYieldQty", dr["FBaseYieldQty"].ToString()); FentityModel.Add("FReqType", dr["FReqType"].ToString()); FentityModel.Add("FInStockOwnerTypeId", dr["FInStockOwnerTypeId"].ToString()); FentityModel.Add("FBaseStockInLimitH", dr["FBaseStockInLimitH"].ToString()); FentityModel.Add("FInStockOwnerId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FCheckProduct", dr["FCheckProduct"].ToString()); FentityModel.Add("FBaseStockInLimitL", dr["FBaseStockInLimitL"].ToString()); FentityModel.Add("FBaseUnitQty", dr["FBaseUnitQty"].ToString()); FentityModel.Add("FRoutingId", new JObject() { ["Fnumber"] = dr["FRoutingNumber"].ToString() }); FentityModel.Add("FBaseUnitId", new JObject() { ["Fnumber"] = dr["FUnitNumber"].ToString() }); FentityModel.Add("FStockId", new JObject() { ["Fnumber"] = dr["FStockNumber"].ToString() }); FentityModel.Add("FStockInLimitH", dr["FStockInLimitH"].ToString()); FentityModel.Add("FStockInLimitL", dr["FStockInLimitL"].ToString()); FentityModel.Add("FCostRate", dr["FCostRate"].ToString()); FentityModel.Add("FCreateType", dr["FCreateType"].ToString()); FentityModel.Add("FYieldRate", dr["FYieldRate"].ToString()); FentityModel.Add("FGroup", dr["FGroup"].ToString()); FentityModel.Add("FNoStockInQty", dr["FNoStockInQty"].ToString()); FentityModel.Add("FBaseNoStockInQty", dr["FBaseNoStockInQty"].ToString()); FentityModel.Add("FRowId", dr["FRowId"].ToString()); FentityModel.Add("FPickMtrlStatus", dr["FPickMtrlStatus"].ToString()); FentityModel.Add("FMOChangeFlag", dr["FMOChangeFlag"].ToString()); FentityModel.Add("FDAYPLANBILLNO", dr["FDAYPLANBILLNO"].ToString()); FentityModel.Add("FDayPlanFseq", dr["FDayPlanFseq"].ToString()); FentityModel.Add("FDayPlanFentryId", dr["FDayPlanFentryId"].ToString()); FentityModel.Add("FDayPlanFid", dr["FDayPlanFid"].ToString()); FentityModel.Add("FDayPlanRemainQty", 0); FentityModel.Add("FDayPlanQty", dr["FQty"].ToString()); FentityModel.Add("F_TEZV_Base", new JObject() { ["Fnumber"] = dr["FPREBDONENUMBER"].ToString() });//包装标识 Fentity.Add(FentityModel); model.Add("FTreeEntity", Fentity); JObject jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); LogService.Write("生产订单json:" + jsonRoot.ToString()); var _result = cloudClient.Save("PRD_MO", jsonRoot.ToString()); var _saveObj = JObject.Parse(_result); var saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (saveIsSuc != "TRUE") { this.View.ShowErrMessage("生产订单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); return; } //LogService.Write(_saveObj); var fBillNo = _saveObj["Result"]["Number"].ToString(); var fID = _saveObj["Result"]["Id"].ToString(); //LogService.Write(_saveObj); //this.View.ShowMessage("生产订单生成成功,单号:" + fBillNo); //生成一张生产订单变更单 model = new JObject(); model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = "SCDDBGD01_SYS" }); //单据类型 model.Add("FCreatorId", new JObject() { ["FUserID"] = Context.UserId }); //创建人 model.Add("FModifierId", new JObject() { ["FUserID"] = Context.UserId }); //修改人 model.Add("FDate", dr["FDate"].ToString()); model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); model.Add("FWorkShopID", new JObject() { ["Fnumber"] = dr["FWorkShopNumber"].ToString() }); Fentity = new JArray(); FentityModel = new JObject(); FentityModel.Add("FChangeType", 2);////变更前 FentityModel.Add("FProductType", dr["FProductType"].ToString()); FentityModel.Add("FMoNo", dr["FBILLNO"].ToString()); FentityModel.Add("FMoId", dr["FID"].ToString()); FentityModel.Add("FMOENTRYID", dr["FENTRYID"].ToString()); FentityModel.Add("FMOENTRYSEQ", dr["FSEQ"].ToString()); FentityModel.Add("FStatus", "1"); FentityModel.Add("FPlanStartDate", dr["FPlanStartDate"].ToString()); FentityModel.Add("FPlanFinishDate", dr["FPlanFinishDate"].ToString()); FentityModel.Add("FRequestOrgId", new JObject() { ["Fnumber"] = dr["FRequestOrgNumber"].ToString() }); FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = dr["FBomNumber"].ToString() }); FentityModel.Add("FReqType", dr["FReqType"].ToString()); FentityModel.Add("FStockInOrgId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = dr["FMATERIALNUMBER"].ToString() }); FentityModel.Add("FUnitId", new JObject() { ["Fnumber"] = dr["FUnitNumber"].ToString() }); FentityModel.Add("FWorkShopId1", new JObject() { ["Fnumber"] = dr["FWorkShopNumber"].ToString() }); FentityModel.Add("FQty", dr["FMoFentryQty"].ToString()); FentityModel.Add("FSrcBillNo", dr["FBILLNO"].ToString());//源单编号 FentityModel.Add("FSrcBillId", dr["FID"].ToString());//源单内码 FentityModel.Add("FSrcBillEntryId", dr["FENTRYID"].ToString());//源单分录内码 FentityModel.Add("FSrcBillEntrySeq", dr["FSEQ"].ToString());//源单行号 FentityModel.Add("FCostRate", dr["FCostRate"].ToString()); FentityModel.Add("FInStockOwnerTypeId", dr["FInStockOwnerTypeId"].ToString()); FentityModel.Add("FInStockOwnerId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FYieldRate", dr["FYieldRate"].ToString()); FentityModel.Add("FGroup", dr["FGroup"].ToString()); //建立关联关系 JArray Fentity2 = new JArray(); JObject FentityModel2 = new JObject(); FentityModel2.Add("FEntity_Link_FFlowId", "f11b462a-8733-40bd-8f29-0906afc6a201"); FentityModel2.Add("FEntity_Link_FFlowLineId", "7"); FentityModel2.Add("FEntity_Link_FRuleId", "PRD_MO2MOCHANGE"); FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_MOENTRY"); FentityModel2.Add("FEntity_Link_FSBillId", dr["FID"].ToString()); FentityModel2.Add("FEntity_Link_FSId", dr["FENTRYID"].ToString()); FentityModel2.Add("FEntity_Link_FBaseQtyOld", dr["FMoFentryQty"].ToString()); FentityModel2.Add("FEntity_Link_FBaseQty", dr["FMoFentryQty"].ToString()); Fentity2.Add(FentityModel2); FentityModel.Add("FEntity_Link", Fentity2); FentityModel.Add("FBFLowId", new JObject() { ["FID"] = "f11b462a-8733-40bd-8f29-0906afc6a201" });//业务流程:FBFLowId Fentity.Add(FentityModel); FentityModel = new JObject(); FentityModel.Add("FChangeType", 3);////变更后 FentityModel.Add("FProductType", dr["FProductType"].ToString()); FentityModel.Add("FMoNo", dr["FBILLNO"].ToString()); FentityModel.Add("FMoId", dr["FID"].ToString()); FentityModel.Add("FMOENTRYID", dr["FENTRYID"].ToString()); FentityModel.Add("FMOENTRYSEQ", dr["FSEQ"].ToString()); FentityModel.Add("FStatus", "1"); FentityModel.Add("FPlanStartDate", dr["FPlanStartDate"].ToString()); FentityModel.Add("FPlanFinishDate", dr["FPlanFinishDate"].ToString()); FentityModel.Add("FRequestOrgId", new JObject() { ["Fnumber"] = dr["FRequestOrgNumber"].ToString() }); FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = dr["FBomNumber"].ToString() }); FentityModel.Add("FReqType", dr["FReqType"].ToString()); FentityModel.Add("FStockInOrgId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = dr["FMATERIALNUMBER"].ToString() }); FentityModel.Add("FUnitId", new JObject() { ["Fnumber"] = dr["FUnitNumber"].ToString() }); FentityModel.Add("FWorkShopId1", new JObject() { ["Fnumber"] = dr["FWorkShopNumber"].ToString() }); FentityModel.Add("FQty", dr["FBgQty"].ToString()); FentityModel.Add("FSrcBillNo", dr["FBILLNO"].ToString());//源单编号 FentityModel.Add("FSrcBillId", dr["FID"].ToString());//源单内码 FentityModel.Add("FSrcBillEntryId", dr["FENTRYID"].ToString());//源单分录内码 FentityModel.Add("FSrcBillEntrySeq", dr["FSEQ"].ToString());//源单行号 FentityModel.Add("FCostRate", dr["FCostRate"].ToString()); FentityModel.Add("FInStockOwnerTypeId", dr["FInStockOwnerTypeId"].ToString()); FentityModel.Add("FInStockOwnerId", new JObject() { ["Fnumber"] = dr["FPrdOrgNumber"].ToString() }); FentityModel.Add("FYieldRate", dr["FYieldRate"].ToString()); FentityModel.Add("FGroup", dr["FGroup"].ToString()); //建立关联关系 Fentity2 = new JArray(); FentityModel2 = new JObject(); FentityModel2.Add("FEntity_Link_FFlowId", "f11b462a-8733-40bd-8f29-0906afc6a201"); FentityModel2.Add("FEntity_Link_FFlowLineId", "7"); FentityModel2.Add("FEntity_Link_FRuleId", "PRD_MO2MOCHANGE"); FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_MOENTRY"); FentityModel2.Add("FEntity_Link_FSBillId", dr["FID"].ToString()); FentityModel2.Add("FEntity_Link_FSId", dr["FENTRYID"].ToString()); FentityModel2.Add("FEntity_Link_FBaseQtyOld", dr["FBgQty"].ToString()); FentityModel2.Add("FEntity_Link_FBaseQty", dr["FBgQty"].ToString()); Fentity2.Add(FentityModel2); FentityModel.Add("FEntity_Link", Fentity2); FentityModel.Add("FBFLowId", new JObject() { ["FID"] = "f11b462a-8733-40bd-8f29-0906afc6a201" });//业务流程:FBFLowId Fentity.Add(FentityModel); model.Add("FEntity", Fentity); jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能 ["Model"] = model }; LogService.Write("生产订单变更单json:" + jsonRoot.ToString()); _result = cloudClient.Save("PRD_MOChange", jsonRoot.ToString()); _saveObj = JObject.Parse(_result); saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (saveIsSuc != "TRUE") { //删除生产订单 var json = new { Ids = fID }; LogService.Write("json:" + json); cloudClient.Delete("PRD_MO", JsonConvert.SerializeObject(json)); LogService.Write("JsonConvert.SerializeObject(json):" + JsonConvert.SerializeObject(json)); LogService.Write("生产订单变更单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); this.View.ShowErrMessage("生产订单变更单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); return; } var _fBillNo = _saveObj["Result"]["Number"].ToString(); var _fID = _saveObj["Result"]["Id"].ToString(); string _sql = string.Format(@" /*dialect*/ update Sc_WorkBillSortBillMain set FMoId = '{0}', FMoEntryId = (select FentryId from T_PRD_MOENTRY where FID ={0}), FMoBillNo = '{1}' where FID={2}", fID, fBillNo, dr["FDayPlanFId"].ToString()); //LogService.Write(_sql); DBServiceHelper.Execute(Context, _sql); //扣除源生产订单 可排日计划数量 _sql = string.Format(@" /*dialect*/ update T_PRD_MOENTRY set FDayPlanQty =FDayPlanQty - {0} where FEntryID={1}", dr["FQty"].ToString(), dr["FENTRYID"].ToString()); //LogService.Write(_sql); DBServiceHelper.Execute(Context, _sql); this.View.ShowMessage("生产订单生成成功,单号:" + fBillNo + "\r\n生产订单变更单生成成功:单号" + _fBillNo); } } } }