王 垚
2022-09-05 89e9e87324656eb6ff2bc70c731ee676eeac9111
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
using System;
using System.Collections.Generic;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.Metadata.FieldElement;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.SCM.App;
using System.Data;
using Newtonsoft.Json.Linq;
using ZD.Cloud.WebApi;
using Newtonsoft.Json;
using Kingdee.BOS.Core.DynamicForm;
using System.Linq;
 
namespace Demo.BillView.PRD
{
    [Description("[日计划工单-审核]服务插件]")]
    [HotUpdate]
    public class Pro_DayPlanAduit : AbstractOperationServicePlugIn
    {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
        {
            base.OnPrepareOperationServiceOption(e);
 
            //为了在BeginOperationTransaction里检查数据抛出异常时
            //只回滚当前单据的事务,这里设置为不支持批量事务,这样BOS会
            //循环为每一张单据创建事务调用操作
            e.SupportTransaction = true;
            e.SurportBatchTransaction = false;
        }
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add("FEntity");
            e.FieldKeys.Add("FEntity_FEntryID");
            e.FieldKeys.Add("FHQty");
        }
        public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
        {
            base.BeginOperationTransaction(e);
            //foreach (var item in e.DataEntitys)
            //{
            //    DynamicObjectCollection entryRows = item["FEntity"] as DynamicObjectCollection;
            //}
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                //DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                //        as DynamicObjectCollection;
                DynamicObjectCollection entryRows = billObj["FEntity"] as DynamicObjectCollection;
                foreach (var entryRow in entryRows)
                {
                    var fentryId = entryRow["Id"].ToString();
                    //生成生产订单
                    string sql = $"/*dialect*/ exec proc_jit_DayPlanAduitAddNemMoOrder {fentryId}";
                    DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
                    if (dt.Rows[0][0].ToString().Contains("成功"))
                        continue;
                    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() });//包装标识
                        FentityModel.Add("F_bsv_Text1", dr["F_bsv_Text1"].ToString());//源单客户代码
                        FentityModel.Add("F_bsv_Date", dr["F_bsv_Date"].ToString());//要求交期
                        FentityModel.Add("F_bsv_KH", new JObject() { ["Fnumber"] = dr["FCUSTOMERNUMBER"].ToString() });//客户
                        //////////////生产订单源单信息////////////////////
                        //FSRCBILLTYPE,FSRCBILLID,FSRCBILLNO,FSRCBILLENTRYID,FSRCBILLENTRYSEQ,FSALEORDERID,FSALEORDERNO,FSALEORDERENTRYID,FSALEORDERENTRYSEQ
                        FentityModel.Add("FSRCBILLTYPE", dr["FSRCBILLTYPE"].ToString());
                        FentityModel.Add("FSRCBILLID", dr["FSRCBILLID"].ToString());
                        FentityModel.Add("FSRCBILLNO", dr["FSRCBILLNO"].ToString());
                        FentityModel.Add("FSRCBILLENTRYID", dr["FSRCBILLENTRYID"].ToString());
                        FentityModel.Add("FSRCBILLENTRYSEQ", dr["FSRCBILLENTRYSEQ"].ToString());
                        FentityModel.Add("FSALEORDERID", dr["FSALEORDERID"].ToString());
                        FentityModel.Add("FSALEORDERNO", dr["FSALEORDERNO"].ToString());
                        FentityModel.Add("FSALEORDERENTRYID", dr["FSALEORDERENTRYID"].ToString());
                        FentityModel.Add("FSALEORDERENTRYSEQ", dr["FSALEORDERENTRYSEQ"].ToString());
                        FentityModel.Add("FReqSrc", dr["FReqSrc"].ToString());//需求来源 1销售订单
                        if (dr["FSRCBILLTYPE"].ToString() == "PLN_PLANORDER")
                        {
                            JArray _Fentity2 = new JArray();
                            JObject _FentityModel2 = new JObject();
                            _FentityModel2.Add("FTREEENTITY_Link_FFlowId", "");//业务流程图:FTREEENTITY_Link_FFlowId
                            _FentityModel2.Add("FTREEENTITY_Link_FFlowLineId", "0");//推进路线:FTREEENTITY_Link_FFlowLineId
                            _FentityModel2.Add("FTREEENTITY_Link_FRuleId", "PlanOrder_MO");//转换规则:FTREEENTITY_Link_FRuleId
                            _FentityModel2.Add("FTREEENTITY_Link_FSTableId", "0");//源单表内码:FTREEENTITY_Link_FSTableId
                            _FentityModel2.Add("FTREEENTITY_Link_FSTableName", "T_PLN_PLANORDER");//源单表:FTREEENTITY_Link_FSTableName
                            _FentityModel2.Add("FTREEENTITY_Link_FSBillId", dr["FSBILLID"].ToString());//源单内码:FTREEENTITY_Link_FSBillId
                            _FentityModel2.Add("FTREEENTITY_Link_FSId", dr["FSID"].ToString()); //源单分录内码:FTREEENTITY_Link_FSId
                            _FentityModel2.Add("FTREEENTITY_Link_FBaseUnitQtyOld", dr["FQty"].ToString());//原始携带量:FTREEENTITY_Link_FBaseUnitQtyOld
                            _FentityModel2.Add("FTREEENTITY_Link_FBaseUnitQty", dr["FQty"].ToString());//修改携带量:FTREEENTITY_Link_FBaseUnitQty
                            _Fentity2.Add(_FentityModel2);
                            FentityModel.Add("FTREEENTITY_Link", _Fentity2);
                        }
                        //////////////////////////////////////////////////
                        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")
                        {
                            e.CancelOperation = true;
                            dictionary.Add(dr["FDAYPLANBILLNO"].ToString(), "生产订单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            //this.View.ShowErrMessage("生产订单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            continue;
                        }
                        var fBillNo = _saveObj["Result"]["Number"].ToString();
                        var fID = _saveObj["Result"]["Id"].ToString();
                        //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", Convert.ToString(DateTime.Now));
                        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());
                        FentityModel.Add("FDAYPLANBILLNO", dr["FDAYPLANBILLNO"].ToString());
                        FentityModel.Add("FDayPlanFentryId", dr["FDayPlanFentryId"].ToString());
                        FentityModel.Add("FDayPlanFid", dr["FDayPlanFid"].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["FNewPlanFinishDate"].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());
                        FentityModel.Add("FDAYPLANBILLNO", dr["FDAYPLANBILLNO"].ToString());
                        FentityModel.Add("FDayPlanFentryId", dr["FDayPlanFentryId"].ToString());
                        FentityModel.Add("FDayPlanFid", dr["FDayPlanFid"].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();
                        //生产订单审核提交以及删除 json格式
                        var json = new
                        {
                            Ids = fID
                        };
                        if (saveIsSuc != "TRUE")
                        {
                            //删除生产订单
                            LogService.Write("json:" + json);
                            cloudClient.Delete("PRD_MO", JsonConvert.SerializeObject(json));
                            LogService.Write("JsonConvert.SerializeObject(json):" + JsonConvert.SerializeObject(jsonRoot));
                            LogService.Write("生产订单变更单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            e.CancelOperation = true;
                            dictionary.Add(dr["FDAYPLANBILLNO"].ToString(), "生产订单变更单生成失败," + _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            continue;
                        }
                        //提交生产订单
                        _result = cloudClient.Submit("PRD_MO", JsonConvert.SerializeObject(json));
                        _saveObj = JObject.Parse(_result);
                        if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                        {
                            dictionary.Add(dr["FDAYPLANBILLNO"].ToString(), _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            continue;
                        }
                        LogService.Write("提交完成");
                        //审核生产订单
                        _result = cloudClient.Audit("PRD_MO", JsonConvert.SerializeObject(json));
                        _saveObj = JObject.Parse(_result);
                        if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                        {
                            dictionary.Add(dr["FDAYPLANBILLNO"].ToString(), _saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
                            continue;
                        }
                        LogService.Write("审核完成");
                        //更新单据信息
                        string _sql = $"exec proc_jit_DayPlanAduitAddNemMoOrderUpdate {fentryId},{fID},'{fBillNo}'";
                        LogService.Write("更新单据信息_sql" + _sql);
                        DBServiceHelper.Execute(Context, _sql);
                        LogService.Write("更新单据信息_sql执行完成");
                    }
                }
            }
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            foreach (var item in dictionary)
            {
                ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
            }
        }
        public static class ResultMessage
        {/// <summary>
         /// 修改提示信息
         /// </summary>
         /// <param name="operateResult"></param>
         /// <param name="billno"></param>
            public static void dataError(OperateResultCollection operateResult, string billno, string message)
            {
                OperateResult operate = operateResult.Where(n => n.Number == billno).First();
                operate.Message = message;
                operate.SuccessStatus = false;
                operate.MessageType = MessageType.FatalError;
            }
        }
    }
}