using Demo.Common.Untility; using Demo.Model.Log; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Kingdee.BOS.WebApi.Client; 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; using System.Threading.Tasks; using ZD.Cloud.Logger; using ZD.Cloud.WebApi; namespace Demo.OperationService.SCM.SAL_SaleOrder { [HotUpdate] [Description("销售订单审核拆单")] public class SAL_SaleOrderSplitBill : AbstractOperationServicePlugIn { private void CreateQkForm(AfterExecuteOperationTransaction e) { var client = KingdeeClient.ApiLogin(Context); foreach (var data in e.DataEntitys) { var billNo = data.GetValue("BillNo"); LogService.WriteAsync("SAL_SaleOrderSplitBill=>"+billNo); if (data.GetValue("FIsSplitBill") || data.GetValue("RedBule") == "1") continue; //LogService.WriteAsync($"BillNo={billNo},FIsSplitBill={data.GetValue("FIsSplitBill")},FISLAST={data.GetValue("FISLAST")},RedBule={data.GetValue("RedBule")}"); var id = data.GetValue("Id"); //如果单据已经是_A,在审核时候直接跳过执行 if (billNo.EndsWith("_A")) continue; var sql = $"Exec V_FilterSaleOrder @id={id}"; var table = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; LogService.WriteAsync(table); if (table.Rows.Count == 0) continue; string sql3 = $"select top 1 F_YQN_ZDR,FNOTE from T_SAL_ORDER WHERE FID={id}"; var table3 = DBServiceHelper.ExecuteDataSet(this.Context, sql3).Tables[0]; var model = new { FBillTypeID = new { FNUMBER = Context.DBId == "5ffd9795291fb7" ? "XSDD01_SYS" : "XSDD101_SYS" }, FDate = DateTime.Now, FSaleOrgId = new { FNumber = "100" }, FCustId = new { FNumber = "AR07000000022" }, FReceiveId = new { FNumber = "AR07000000022" }, FSaleGroupId = new { FNumber = "100002" }, FSalerId = new { FNumber = "D080190016" }, //FLinkPhone= "13757508209", FSettleId = new { FNumber = "AR07000000022" }, FChargeId = new { FNumber = "AR07000000022" }, F_zzzz_Assistant = new { FNumber = "087" }, FPAYCUSTOMER = new { FNUMBER = "AR07000000022" }, FISGUARANTEE = true, FBillNo = $"{billNo}_A", F_YQN_ZDR = table3.Rows.Count == 0 ? string.Empty : table3.Rows[0][0],//制单人 FNOTE = table3.Rows.Count == 0 ? string.Empty : table3.Rows[0][1],//整单摘要 FSaleOrderEntry = table.AsEnumerable().Select(row => new { FSUBMATERIALNUMBER = new { FNumber = Context.DBId == "5ffd9795291fb7" ? "CSCS0001" : "F9900000000" }, FRowType = "Standard", FDeliveryDate = DateTime.Now, FStockOrgId = new { FNumber = "100" }, FSettleOrgIds = new { FNumber = "100" }, FSupplyOrgId = new { FNumber = "100" }, FOwnerTypeId = "BD_OwnerOrg", FOwnerId = new { FNumber = "100" }, FReserveType = "1", FOUTLMTUNIT = "SAL", FMaterialId = new { FNumber = row["MaterialNo"] }, F_YQN_DYXH = "CS001", FSOSTOCKID = new { FNumber = row["FStockNo"] }, FLot = new { FNumber = row["LotNo"] }, FLOT_TEXT=row["FLotName"], FQty = row["Qty"] }) }; LogService.WriteAsync(model); var restlt = client.Save("SAL_SaleOrder", JsonConvert.SerializeObject(new { Model = model })); LogService.WriteAsync(restlt); var response = JsonConvert.DeserializeObject(restlt); if (response.Result.ResponseStatus.IsSuccess) { var ids = JsonConvert.SerializeObject(new { Ids = response.Result.ResponseStatus.SuccessEntitys[0].Id }); LogService.WriteAsync(ids); var r = client.Submit("SAL_SaleOrder", ids); LogService.WriteAsync(r); r = client.Audit("SAL_SaleOrder", ids); } foreach (var item in this.OperationResult.OperateResult) { if (item.PKValue?.ToString() == id.ToString()) { item.Message += response.Result.ResponseStatus.IsSuccess ? $"生成墙咔领料单据{billNo}_A" : $"{billNo}生成强卡领料单据失败:{JsonConvert.SerializeObject(response.Result.ResponseStatus.Errors.Select(x => x.Message + ";"))}"; } } } } public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); #region 字段信息加载 e.FieldKeys.Add("FOrderEntryPlan"); e.FieldKeys.Add("FIsSplitBill"); e.FieldKeys.Add("FOverOrgTransDirect"); e.FieldKeys.Add("FExchangeTypeId"); e.FieldKeys.Add("FIsIncludedTax"); e.FieldKeys.Add("FSettleModeId"); e.FieldKeys.Add("FIsPriceExcludeTax"); e.FieldKeys.Add("FRecConditionId"); e.FieldKeys.Add("FSettleCurrId"); e.FieldKeys.Add("FIsSplitBill"); e.FieldKeys.Add("F_zzzz_CheckBox2"); e.FieldKeys.Add("F_zzzz_Text7"); e.FieldKeys.Add("FCollectionTime"); e.FieldKeys.Add("F_zzzz_Assistant"); e.FieldKeys.Add("FDifferenceAmount"); e.FieldKeys.Add("F_zzzz_Text8"); e.FieldKeys.Add("FLCLSituation"); e.FieldKeys.Add("FCustInvioce"); e.FieldKeys.Add("FPAYCUSTOMER"); e.FieldKeys.Add("FWEBANKACCOUNT"); e.FieldKeys.Add("FHEADLOCID"); e.FieldKeys.Add("FIsMobile"); e.FieldKeys.Add("FNote"); e.FieldKeys.Add("FISINIT"); e.FieldKeys.Add("FChargeId"); e.FieldKeys.Add("FReceiveContact"); e.FieldKeys.Add("FSettleId"); e.FieldKeys.Add("FReceiveAddress"); e.FieldKeys.Add("FLinkPhone"); e.FieldKeys.Add("FSalerId"); e.FieldKeys.Add("FSaleGroupId"); e.FieldKeys.Add("FSaleDeptId"); e.FieldKeys.Add("FReceiveId"); e.FieldKeys.Add("FCOLLECTBALANCEAMOUNT"); e.FieldKeys.Add("FCustId"); e.FieldKeys.Add("FSaleOrgId"); e.FieldKeys.Add("FDate"); e.FieldKeys.Add("FBillTypeID"); e.FieldKeys.Add("FRowType"); e.FieldKeys.Add("FMaterialId"); e.FieldKeys.Add("FSUBMATERIALNUMBER"); e.FieldKeys.Add("FMapId"); e.FieldKeys.Add("FUnitID"); e.FieldKeys.Add("FQty"); e.FieldKeys.Add("FPrice"); e.FieldKeys.Add("FTaxPrice"); e.FieldKeys.Add("F_zzzz_Decimal4"); e.FieldKeys.Add("FLot"); e.FieldKeys.Add("FIsFree"); e.FieldKeys.Add("FEntryTaxRate"); e.FieldKeys.Add("FDeliveryDate"); e.FieldKeys.Add("FStockOrgId"); e.FieldKeys.Add("FSettleOrgIds"); e.FieldKeys.Add("FSupplyOrgId"); e.FieldKeys.Add("FOwnerTypeId"); e.FieldKeys.Add("FOwnerId"); e.FieldKeys.Add("FEntryNote"); e.FieldKeys.Add("FReserveType"); e.FieldKeys.Add("F_zzzz_Text9"); e.FieldKeys.Add("FPriceBaseQty"); e.FieldKeys.Add("FStockUnitID"); e.FieldKeys.Add("FStockQty"); e.FieldKeys.Add("FStockBaseQty"); e.FieldKeys.Add("FOUTLMTUNIT"); e.FieldKeys.Add("FOutLmtUnitID"); e.FieldKeys.Add("FISMRP"); e.FieldKeys.Add("FLOCKSTOCK"); e.FieldKeys.Add("F_zzzz_Combo1"); e.FieldKeys.Add("F_zzzz_CheckBox"); e.FieldKeys.Add("F_zzzz_Text"); e.FieldKeys.Add("F_zzzz_Assistant2"); e.FieldKeys.Add("F_zzzz_Decimal7"); e.FieldKeys.Add("F_zzzz_Decimal8"); e.FieldKeys.Add("FSpecialOffer"); e.FieldKeys.Add("FMESScheduling"); e.FieldKeys.Add("FMESScheduling"); e.FieldKeys.Add("FIsUnsalablePrd"); e.FieldKeys.Add("FPlanProdDate"); e.FieldKeys.Add("FQitao"); e.FieldKeys.Add("FOrderEntryPlan"); e.FieldKeys.Add("FDetailLocId"); e.FieldKeys.Add("FDetailLocAddress"); e.FieldKeys.Add("FPlanDate"); e.FieldKeys.Add("FTransportLeadTime"); e.FieldKeys.Add("FPlanQty"); e.FieldKeys.Add("FCOLLECTIONNO"); e.FieldKeys.Add("FOtherARBillNo"); e.FieldKeys.Add("F_YQN_ZDR"); e.FieldKeys.Add("FCreatorId"); e.FieldKeys.Add("FISGuarantee"); e.FieldKeys.Add("F_zzzz_DDBZ"); e.FieldKeys.Add("F_YQN_CSHDDBH"); e.FieldKeys.Add("FCreatorId"); e.FieldKeys.Add("FModifierId"); e.FieldKeys.Add("F_YQN_DYXH"); e.FieldKeys.Add("F_YQN_GYS"); e.FieldKeys.Add("F_YQN_CGY1"); e.FieldKeys.Add("FFIRSTPRINTTIME"); e.FieldKeys.Add("F_ZZZZ_PRINTTIMES"); e.FieldKeys.Add("F_zzzz_PrintDateTime"); e.FieldKeys.Add("FFirstTime"); e.FieldKeys.Add("FLastTime"); e.FieldKeys.Add("FPrintCount"); e.FieldKeys.Add("FIsNeedCheck"); e.FieldKeys.Add("FISCASHSALE"); e.FieldKeys.Add("F_ZZZZ_QIAO"); e.FieldKeys.Add("F_ZZZZ_OEM"); e.FieldKeys.Add("FPushPrdPlan"); e.FieldKeys.Add("FLotTxt"); e.FieldKeys.Add("F_zzzz_Decimal"); e.FieldKeys.Add("F_zzzz_Decimal1"); e.FieldKeys.Add("F_zzzz_Assistant3"); e.FieldKeys.Add("F_zzzz_Assistant4"); e.FieldKeys.Add("F_zzzz_Assistant6"); e.FieldKeys.Add("F_zzzz_Assistant7"); e.FieldKeys.Add("F_zzzz_Assistant8"); e.FieldKeys.Add("F_zzzz_Assistant9"); e.FieldKeys.Add("FLossParam"); e.FieldKeys.Add("F_zzzz_Decimal5"); e.FieldKeys.Add("F_zzzz_Text1"); e.FieldKeys.Add("F_zzzz_Assistant1"); e.FieldKeys.Add("FSOStockId"); e.FieldKeys.Add("F_zzzz_FLBZ"); e.FieldKeys.Add("F_zzzz_WBBZ"); e.FieldKeys.Add("FISLAST"); e.FieldKeys.Add("F_zzzz_CQFS"); e.FieldKeys.Add("F_zzzz_MLKD"); e.FieldKeys.Add("F_zzzz_BGD"); e.FieldKeys.Add("F_zzzz_BKD"); e.FieldKeys.Add("F_zzzz_DDSL"); e.FieldKeys.Add("F_CUT_TIME"); e.FieldKeys.Add("F_BZ_TIME"); e.FieldKeys.Add("F_loss_backup"); e.FieldKeys.Add("FIsCustomerProvide"); e.FieldKeys.Add("FISREFRESHLOT"); e.FieldKeys.Add("F_zzzz_WBBZ1"); e.FieldKeys.Add("FSaleQty"); e.FieldKeys.Add("FTotalAmount"); e.FieldKeys.Add("FLotEmptyDate"); e.FieldKeys.Add("FSaleOutLot"); e.FieldKeys.Add("FIsClose"); e.FieldKeys.Add("FIsStatistics"); e.FieldKeys.Add("F_zzzz_CheckBox1"); e.FieldKeys.Add("F_zzzz_Text3"); e.FieldKeys.Add("F_zzzz_Text4"); e.FieldKeys.Add("F_zzzz_Text5"); e.FieldKeys.Add("F_zzzz_Text10"); e.FieldKeys.Add("F_zzzz_Text11"); e.FieldKeys.Add("F_zzzz_Integer"); e.FieldKeys.Add("FParentDateTime"); e.FieldKeys.Add("FChildrenDatetime"); e.FieldKeys.Add("FSplitSBillNo"); e.FieldKeys.Add("FIsNeedAllSend"); e.FieldKeys.Add("F_XSDD_PGBZ"); e.FieldKeys.Add("F_XSDD_PGSJ"); #endregion } public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); CreateQkForm(e); var srcDatas = e.SelectedRows; //// 使用webapi引用组件Kingdee.BOS.WebApi.Client.dll,进行单据处理 //K3CloudApiClient client = new K3CloudApiClient("http://localhost/k3Cloud/"); ////var loginResult = client.ValidateLogin("5fe40ecc0b7bf2", "Administrator", "888888", 2052);//本地环境 //var loginResult = client.ValidateLogin("5f56ea565892f4", "Administrator", "ycy123", 2052);//正式环境 //var resultType = JObject.Parse(loginResult)["LoginResultType"].Value(); ////登录结果类型等于1,代表登录成功 //if (resultType == 1) //{ CloudClient client = new CloudClient("http://localhost/k3Cloud/"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单", "API登录成功"); Dictionary dictionary = new Dictionary(); foreach (var srcData in srcDatas) { //string billno = srcData["BillNo"].ToString();//单据编号 //string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); //JObject UnAuditResultObj = JObject.Parse(UnAuditResult); //if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") //{ // string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}"); //} bool curr = false; string idlist = string.Empty;//暂存单据集合 string savejsonlist = string.Empty;//暂存单据保存JSON string billno = srcData["BillNo"].ToString();//单据编号 bool IsSplitBill = bool.Parse(srcData["FIsSplitBill"].ToString());//是否拆单 if (IsSplitBill) { try { WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "符合拆单条件:" + billno); string sql = $@"/*dialect*/SELECT B.FQitao FROM dbo.T_SAL_ORDER A(NOLOCK) JOIN dbo.T_SAL_ORDERENTRY B(NOLOCK) ON B.FID = A.FID WHERE A.FBILLNO='{billno}' GROUP BY B.FQitao"; DataTable data = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; //拆单 for (int i = 0; i < data.Rows.Count; i++) { WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "进入拆单循环"); #region 拼接表头 string SplitBillNo = billno + "-" + (i + 1);//拆单单号 StringBuilder sJson = new StringBuilder(); sJson.Append("{"); sJson.Append("\"NeedUpDateFields\": [],"); sJson.Append("\"NeedReturnFields\": [],"); sJson.Append("\"IsDeleteEntry\": \"true\","); sJson.Append("\"SubSystemId\": \"\","); sJson.Append("\"IsVerifyBaseDataField\": \"true\","); sJson.Append("\"IsEntryBatchFill\": \"true\","); sJson.Append("\"ValidateFlag\": \"true\","); sJson.Append("\"NumberSearch\": \"true\","); sJson.Append("\"InterationFlags\": \"\","); sJson.Append("\"Model\": {"); sJson.Append("\"FID\": 0,"); sJson.Append("\"FBillTypeID\": {\"FNUMBER\": \"" + ((srcData["BillTypeID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FDate\": \"" + (srcData["Date"]?.ToString() ?? "") + "\","); sJson.Append("\"FSaleOrgId\": {\"FNumber\": \"" + ((srcData["SaleOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FCustId\": {\"FNumber\": \"" + ((srcData["CustId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FBillNo\": \"" + SplitBillNo + "\","); sJson.Append("\"FCOLLECTBALANCEAMOUNT\": " + (srcData["COLLECTBALANCEAMOUNT"]?.ToString() ?? "0") + ","); sJson.Append("\"FReceiveId\": {\"FNumber\": \"" + ((srcData["ReceiveId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSaleDeptId\": {\"FNumber\": \"" + ((srcData["SaleDeptId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSaleGroupId\": {\"FNumber\": \"" + ((srcData["SaleGroupId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSalerId\": {\"FNumber\": \"" + ((srcData["SalerId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSettleId\": {\"FNumber\": \"" + ((srcData["SettleId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FReceiveContact\": {\"FNumber\": \"" + ((srcData["ReceiveContact"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FChargeId\": {\"FNumber\": \"" + ((srcData["ChargeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FISINIT\": \"" + (srcData["ISINIT"]?.ToString() ?? "False") + "\","); sJson.Append("\"FISGuarantee\": \"" + (srcData["ISGuarantee"]?.ToString() ?? "false") + "\","); if ((srcData["F_YQN_ZDR"]?.ToString() ?? "") == "") { sJson.Append("\"F_YQN_ZDR\": \"" + ((srcData["CreatorId"] as DynamicObject)?["Name"].ToString() ?? "") + "\","); } else { sJson.Append("\"F_YQN_ZDR\": \"" + (srcData["F_YQN_ZDR"]?.ToString() ?? "") + "\","); } sJson.Append("\"FISCASHSALE\": \"" + (srcData["ISCASHSALE"]?.ToString() ?? "false") + "\","); sJson.Append("\"FIsNeedCheck\": \"True\","); sJson.Append("\"FISLAST\": \"False\","); sJson.Append("\"FFIRSTPRINTTIME\": \"" + (srcData["FFIRSTPRINTTIME"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_PrintDateTime\": \"" + (srcData["F_zzzz_PrintDateTime"]?.ToString() ?? "") + "\","); sJson.Append("\"F_ZZZZ_PRINTTIMES\": " + (srcData["F_ZZZZ_PRINTTIMES"]?.ToString() ?? "0") + ","); sJson.Append("\"FFirstTime\": \"" + (srcData["FFirstTime"]?.ToString() ?? "") + "\","); sJson.Append("\"FLastTime\": \"" + (srcData["FLastTime"]?.ToString() ?? "") + "\","); sJson.Append("\"FPrintCount\": " + (srcData["FPrintCount"]?.ToString() ?? "0") + ","); sJson.Append("\"F_YQN_CSHDDBH\": \"" + (srcData["F_YQN_CSHDDBH"]?.ToString() ?? "") + "\","); sJson.Append("\"FCOLLECTIONNO\": \"" + (srcData["COLLECTIONNO"]?.ToString() ?? "") + "\","); sJson.Append("\"FOtherARBillNo\": \"" + (srcData["OtherARBillNo"]?.ToString() ?? "") + "\","); sJson.Append("\"FNote\": \"" + (srcData["Note"]?.ToString() ?? "") + "\","); sJson.Append("\"FIsMobile\": \"" + (srcData["IsMobile"]?.ToString() ?? "false") + "\","); sJson.Append("\"FHEADLOCID\": {\"FNUMBER\": \"" + ((srcData["HEADLOCID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FWEBANKACCOUNT\": {\"FNUMBER\": \"" + ((srcData["WEBANKACCOUNT"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FPAYCUSTOMER\": {\"FNUMBER\": \"" + ((srcData["PAYCUSTOMER"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FCustInvioce\": {\"FNUMBER\": \"" + ((srcData["CustInvioce"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FLCLSituation\": \"" + (srcData["LCLSituation"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text8\": \"" + (srcData["F_zzzz_Text8"]?.ToString() ?? "") + "\","); //sJson.Append("\"FDifferenceAmount\": " + (srcData["FDifferenceAmount"]?.ToString() ?? "0") + ","); sJson.Append("\"FCollectionTime\": \"" + (srcData["CollectionTime"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_CheckBox2\": \"" + (srcData["F_zzzz_CheckBox2"]?.ToString() ?? "") + "\","); sJson.Append("\"FIsSplitBill\": \"false\","); sJson.Append("\"F_zzzz_Assistant\": {\"FNumber\": \"" + ((srcData["F_zzzz_Assistant"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"FLinkPhone\": \"" + (srcData["FLinkPhone"]?.ToString() ?? "") + "\","); sJson.Append("\"FReceiveAddress\": \"" + (srcData["ReceiveAddress"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text7\": \"" + (srcData["F_zzzz_Text7"]?.ToString() ?? "") + "\","); sJson.Append("\"FCreatorId\": {\"FUserID\": " + (srcData["CreatorId_Id"]?.ToString() ?? "0") + "},"); sJson.Append("\"FModifierId\": {\"FUserID\": " + (srcData["ModifierId_Id"]?.ToString() ?? "0") + "},"); sJson.Append("\"F_zzzz_FLBZ\": \"" + (srcData["F_zzzz_FLBZ"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_WBBZ\": \"" + (srcData["F_zzzz_WBBZ"]?.ToString() ?? "") + "\","); sJson.Append("\"FIsStatistics\": \"True\","); string no = billno; string bno = string.Empty; if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) > (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-"))) { bno = no.Substring(0, no.IndexOf("-")); } else if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) < (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-"))) { bno = no.Substring(0, no.IndexOf("_")); } else if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) == (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-"))) { bno = no; } sJson.Append("\"FSplitSBillNo\": \""+ bno + "\","); sJson.Append("\"FIsNeedAllSend\": \"" + (srcData["FIsNeedAllSend"]?.ToString() ?? "false") + "\","); sJson.Append("\"F_zzzz_CheckBox1\": \"" + (srcData["F_zzzz_CheckBox1"]?.ToString() ?? "false") + "\","); sJson.Append("\"FIsCustomerProvide\": \"" + (srcData["FIsCustomerProvide"]?.ToString() ?? "false") + "\","); DynamicObjectCollection SaleDataFinance = srcData["SaleOrderFinance"] as DynamicObjectCollection;//财务明细 sJson.Append("\"FSaleOrderFinance\":"); sJson.Append("{"); sJson.Append("\"FSettleCurrId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["SettleCurrId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FRecConditionId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["RecConditionId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FIsPriceExcludeTax\": \"" + (SaleDataFinance[0]["IsPriceExcludeTax"]?.ToString() ?? "false") + "\","); sJson.Append("\"FSettleModeId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["SettleModeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FIsIncludedTax\": \"" + (SaleDataFinance[0]["IsIncludedTax"]?.ToString() ?? "false") + "\","); sJson.Append("\"FExchangeTypeId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["ExchangeTypeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FOverOrgTransDirect\": \"" + (SaleDataFinance[0]["OverOrgTransDirect"]?.ToString() ?? "false") + "\""); sJson.Append("},"); sJson.Append("\"FSaleOrderEntry\": ["); #endregion WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表头JSON处理完"); //拆明细 DynamicObjectCollection SaleData = srcData["SaleOrderEntry"] as DynamicObjectCollection;//订单明细 string sqldtl = $@"/*dialect*/SELECT B.FSEQ FROM dbo.T_SAL_ORDER A(NOLOCK) JOIN dbo.T_SAL_ORDERENTRY B(NOLOCK) ON B.FID = A.FID WHERE A.FBILLNO='{billno}' AND B.FQitao='{data.Rows[i]["FQitao"]}'"; WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表体拼接sql执行语句:" + sqldtl); DataTable datadtl = DBServiceHelper.ExecuteDataSet(this.Context, sqldtl).Tables[0]; for (int j = 0; j < datadtl.Rows.Count; j++) { WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表体循环开始"); int fseq = int.Parse(datadtl.Rows[j]["FSEQ"].ToString()); sJson.Append("{"); sJson.Append("\"FRowType\": \"" + (SaleData[fseq - 1]["RowType"]?.ToString() ?? "") + "\","); sJson.Append("\"FMapId\": {\"FName\": \"" + ((SaleData[fseq - 1]["MapId"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},"); //sJson.Append("\"FSUBMATERIALNUMBER\": {\"FName\": \"" + ((SaleData[fseq - 1]["SUBMATERIALNUMBER"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},"); sJson.Append("\"FSUBMATERIALNUMBER\": {\"FNUMBER\": \"" + ((SaleData[fseq - 1]["SUBMATERIALNUMBER"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); //sJson.Append("\"FMaterialId\": {\"FName\": \"" + ((SaleData[fseq - 1]["MaterialId"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},"); sJson.Append("\"FMaterialId\": {\"FNUMBER\": \"" + ((SaleData[fseq - 1]["MaterialId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["UnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); //sJson.Append("\"FPrice\": " + (SaleData[fseq - 1]["Price"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_Decimal4\": " + (SaleData[fseq - 1]["F_zzzz_Decimal4"]?.ToString() ?? "0") + ","); sJson.Append("\"FIsFree\": \"" + (SaleData[fseq - 1]["IsFree"]?.ToString() ?? "false") + "\","); sJson.Append("\"FEntryTaxRate\": " + (SaleData[fseq - 1]["TaxRate"]?.ToString() ?? "0") + ","); sJson.Append("\"FDeliveryDate\": \"" + (SaleData[fseq - 1]["DeliveryDate"]?.ToString() ?? "") + "\","); sJson.Append("\"FStockOrgId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["StockOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSettleOrgIds\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SettleOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FSupplyOrgId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SupplyOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FOwnerTypeId\": \"" + (SaleData[fseq - 1]["OwnerTypeId"]?.ToString() ?? "") + "\","); sJson.Append("\"FOwnerId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["OwnerId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FReserveType\": \"" + (SaleData[fseq - 1]["ReserveType"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text9\": \" " + (SaleData[fseq - 1]["F_zzzz_Text9"]?.ToString() ?? "") + "\","); sJson.Append("\"FPriceBaseQty\": " + (SaleData[fseq - 1]["PriceBaseQty"]?.ToString() ?? "0") + ","); sJson.Append("\"FStockUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["StockUnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FStockQty\": " + (SaleData[fseq - 1]["StockQty"]?.ToString() ?? "0") + ","); sJson.Append("\"FStockBaseQty\": " + (SaleData[fseq - 1]["StockBaseQty"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_DDBZ\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_DDBZ"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"FOUTLMTUNIT\": \"" + (SaleData[fseq - 1]["OUTLMTUNIT"]?.ToString() ?? "") + "\","); sJson.Append("\"FOutLmtUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["OutLmtUnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FISMRP\": \"" + (SaleData[fseq - 1]["FISMRP"]?.ToString() ?? "false") + "\","); sJson.Append("\"FLOCKSTOCK\": \"" + (SaleData[fseq - 1]["LOCKSTOCK"]?.ToString() ?? "false") + "\","); sJson.Append("\"F_zzzz_CheckBox\": \"" + (SaleData[fseq - 1]["F_zzzz_CheckBox"]?.ToString() ?? "false") + "\","); sJson.Append("\"FPushPrdPlan\": \"" + (SaleData[fseq - 1]["FPushPrdPlan"]?.ToString() ?? "false") + "\","); //sJson.Append("\"F_zzzz_CheckBox1\": \"" + (SaleData[fseq - 1]["F_zzzz_CheckBox1"]?.ToString() ?? "false") + "\","); //sJson.Append("\"F_zzzz_Combo7\": \"" + (SaleData[fseq - 1]["F_zzzz_Combo7"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_BKD\": " + (SaleData[fseq - 1]["F_zzzz_BKD"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_BGD\": " + (SaleData[fseq - 1]["F_zzzz_BGD"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_MLKD\": " + (SaleData[fseq - 1]["F_zzzz_MLKD"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_CQFS\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_CQFS"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_DDSL\": " + (SaleData[fseq - 1]["F_zzzz_DDSL"]?.ToString() ?? "0") + ","); sJson.Append("\"F_ZZZZ_OEM\": \"" + (SaleData[fseq - 1]["F_ZZZZ_OEM"]?.ToString() ?? "") + "\","); sJson.Append("\"F_ZZZZ_QIAO\": \"" + (SaleData[fseq - 1]["F_ZZZZ_QIAO"]?.ToString() ?? "") + "\","); sJson.Append("\"F_YQN_DYXH\": \"" + (SaleData[fseq - 1]["F_YQN_DYXH"]?.ToString() ?? "") + "\","); sJson.Append("\"F_YQN_GYS\": \"" + (SaleData[fseq - 1]["F_YQN_GYS"]?.ToString() ?? "") + "\","); sJson.Append("\"F_YQN_CGY1\": \"" + (SaleData[fseq - 1]["F_YQN_CGY1"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text\": \"" + (SaleData[fseq - 1]["F_zzzz_Text"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Assistant2\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant2"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Decimal7\": " + (SaleData[fseq - 1]["F_zzzz_Decimal7"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_Decimal8\": " + (SaleData[fseq - 1]["F_zzzz_Decimal8"]?.ToString() ?? "0") + ","); sJson.Append("\"FSpecialOffer\": \"" + (SaleData[fseq - 1]["SpecialOffer"]?.ToString() ?? "false") + "\","); sJson.Append("\"FIsClose\": \"" + (SaleData[fseq - 1]["FIsClose"]?.ToString() ?? "A") + "\","); sJson.Append("\"FMESScheduling\": \"" + (SaleData[fseq - 1]["FMESScheduling"]?.ToString() ?? "false") + "\","); sJson.Append("\"FIsUnsalablePrd\": \"" + (SaleData[fseq - 1]["IsUnsalablePrd"]?.ToString() ?? "false") + "\","); sJson.Append("\"FPlanProdDate\": \"" + (SaleData[fseq - 1]["PlanProdDate"]?.ToString() ?? "") + "\","); sJson.Append("\"FISREFRESHLOT\": \"" + (SaleData[fseq - 1]["FISREFRESHLOT"]?.ToString() ?? "false") + "\","); sJson.Append("\"F_zzzz_Assistant3\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant3"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant4\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant4"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant6\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant6"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant7\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant7"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant8\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant8"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant9\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant9"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Assistant1\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant1"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"F_zzzz_Decimal\": " + (SaleData[fseq - 1]["F_zzzz_Decimal"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_Decimal1\": " + (SaleData[fseq - 1]["F_zzzz_Decimal1"]?.ToString() ?? "0") + ","); sJson.Append("\"F_zzzz_Decimal5\": " + (SaleData[fseq - 1]["F_zzzz_Decimal5"]?.ToString() ?? "0") + ","); sJson.Append("\"F_XSDD_PGBZ\": \"" + (SaleData[fseq - 1]["F_XSDD_PGBZ"]?.ToString() ?? "") + "\","); sJson.Append("\"F_XSDD_PGSJ\": \"" + (SaleData[fseq - 1]["F_XSDD_PGSJ"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text1\": \"" + (SaleData[fseq - 1]["F_zzzz_Text1"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_WBBZ1\": \"" + (SaleData[fseq - 1]["F_zzzz_WBBZ1"]?.ToString() ?? "") + "\","); sJson.Append("\"FSaleQty\": " + (SaleData[fseq - 1]["FSaleQty"]?.ToString() ?? "0") + ","); sJson.Append("\"FTotalAmount\": " + (SaleData[fseq - 1]["FTotalAmount"]?.ToString() ?? "0") + ","); sJson.Append("\"FLossParam\": " + (SaleData[fseq - 1]["LossParam"]?.ToString() ?? "0") + ","); sJson.Append("\"FEntryNote\": \"" + (SaleData[fseq - 1]["Note"]?.ToString() ?? "") + "\","); sJson.Append("\"F_BZ_TIME\": \"" + (SaleData[fseq - 1]["F_BZ_TIME"]?.ToString() ?? "") + "\","); sJson.Append("\"F_CUT_TIME\": \"" + (SaleData[fseq - 1]["F_CUT_TIME"]?.ToString() ?? "") + "\","); sJson.Append("\"F_loss_backup\": " + (SaleData[fseq - 1]["F_loss_backup"]?.ToString() ?? "0") + ","); sJson.Append("\"FSOStockId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SOStockId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); //sJson.Append("\"FQitao\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["FQitao"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},"); sJson.Append("\"FQty\": " + (SaleData[fseq - 1]["Qty"]?.ToString() ?? "0") + ","); sJson.Append("\"FLot\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["Lot"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); sJson.Append("\"FTaxPrice\": " + (SaleData[fseq - 1]["TaxPrice"]?.ToString() ?? "0") + ","); sJson.Append("\"FLotEmptyDate\": \"" + (SaleData[fseq - 1]["FLotEmptyDate"]?.ToString() ?? "") + "\","); sJson.Append("\"FSaleOutLot\": \"" + (SaleData[fseq - 1]["FSaleOutLot"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text3\": \"" + (SaleData[fseq - 1]["F_zzzz_Text3"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text4\": \"" + (SaleData[fseq - 1]["F_zzzz_Text4"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text5\": \"" + (SaleData[fseq - 1]["F_zzzz_Text5"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text10\": \"" + (SaleData[fseq - 1]["F_zzzz_Text10"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Text11\": \"" + (SaleData[fseq - 1]["F_zzzz_Text11"]?.ToString() ?? "") + "\","); sJson.Append("\"F_zzzz_Integer\": \"" + (SaleData[fseq - 1]["F_zzzz_Integer"]?.ToString() ?? "0") + "\","); sJson.Append("\"FParentDateTime\": \"" + (SaleData[fseq - 1]["FParentDateTime"]?.ToString() ?? "") + "\","); sJson.Append("\"FChildrenDatetime\": \"" + (SaleData[fseq - 1]["FChildrenDatetime"]?.ToString() ?? "") + "\","); sJson.Append("\"FLotTxt\": \"" + (SaleData[fseq - 1]["FLotTxt"]?.ToString() ?? "0") + "\""); //sJson.Append("\"FLotTxt\": \"" + (SaleData[fseq - 1]["FLotTxt"]?.ToString() ?? "0") + "\","); //报错未查出原因,暂拿掉交货明细表体20210302 //DynamicObjectCollection SaleDataPlan = SaleData[fseq - 1]["OrderEntryPlan"] as DynamicObjectCollection; //sJson.Append("\"FOrderEntryPlan\": [{"); //sJson.Append("\"FDetailLocId\": {\"FNumber\": \"" + ((SaleDataPlan[0]["DetailLocId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},"); //sJson.Append("\"FDetailLocAddress\": \"" + (SaleDataPlan[0]["DetailLocAddress"]?.ToString() ?? "") + "\","); //sJson.Append("\"FPlanDate\": \"" + (SaleDataPlan[0]["PlanDate"]?.ToString() ?? "") + "\","); //sJson.Append("\"FTransportLeadTime\": " + (SaleDataPlan[0]["TransportLeadTime"]?.ToString() ?? "") + ","); //sJson.Append("\"FPlanQty\": " + (SaleDataPlan[0]["PlanQty"]?.ToString() ?? "0") + "}]"); sJson.Append("}"); if (j != datadtl.Rows.Count - 1) { sJson.Append(","); } WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表体循环结束"); } sJson.Append("]"); //sJson.Append("\"FSaleOrderPlan\": ["); //sJson.Append("{"); //sJson.Append("\"FNeedRecAdvance\": " + SaleData[fseq - 1]["RowType"].ToString() + ","); //sJson.Append("\"FRecAdvanceRate\": " + SaleData[fseq - 1]["RowType"].ToString() + ","); //sJson.Append("\"FRecAdvanceAmount\": " + SaleData[fseq - 1]["RowType"].ToString() + ","); //sJson.Append("\"FIsOutStockByRecamount\": " + SaleData[fseq - 1]["RowType"].ToString() + ""); //sJson.Append("}"); //sJson.Append("]"); sJson.Append("}"); sJson.Append("}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表体JSON处理结束,单据JSON:" + sJson.ToString()); JObject aa = JObject.Parse(JObject.Parse(sJson.ToString())["Model"].ToString()); savejsonlist += aa.ToString() + ","; #region 第一版 ////暂存处理 //string DraftResult = client.Draft("SAL_SaleOrder", sJson.ToString()); //WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "表体JSON处理结束,暂存结果:" + DraftResult); //JObject DraftResultObj = JObject.Parse(DraftResult); //if (DraftResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") //{ // JObject aa = JObject.Parse(JObject.Parse(sJson.ToString())["Model"].ToString()); // aa["FID"] = DraftResultObj["Result"]["Id"].ToString(); // savejsonlist += aa.ToString() + ","; // idlist += DraftResultObj["Result"]["Id"].ToString() + ","; // //LogHelper.Info("订单审核拆单json:"+ aa.ToString()); //} //else//暂存失败则删除当前单据拆出来的所有暂存单据,并且跳出当前拆单单据,进行下一个拆单处理 //{ // idlist = idlist.Substring(0, idlist.Length - 1); // string deletemessage = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "暂存失败,删除原订单拆单结果:" + deletemessage); // dictionary.Add(billno, DraftResultObj["Result"]["ResponseStatus"]["Errors"].ToString()); // curr = true; // break; //} #endregion } string successNo = string.Empty; savejsonlist = savejsonlist.Substring(0, savejsonlist.Length - 1); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量保存JSON:" + "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}"); string message = client.BatchSave("SAL_SaleOrder", "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量保存结果:" + message); JObject messageObj = JObject.Parse(message); for (int i = 0; i < messageObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToList().Count; i++) { successNo += messageObj["Result"]["ResponseStatus"]["SuccessEntitys"][i]["Id"].ToString() + ","; } if (successNo.Length > 0) { successNo = successNo.Substring(0, successNo.Length - 1); } if (messageObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") { string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "反审核结果:" + UnAuditResult); JObject UnAuditResultObj = JObject.Parse(UnAuditResult); if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") { WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "删除原单开始时间:" + DateTime.Now.ToString()); string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "删除原单结束时间" + DateTime.Now.ToString()); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "删除结果:" + DeleteResult); JObject DeleteResultObj = JObject.Parse(DeleteResult); if (DeleteResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") { sql = $@"/*dialect*/UPDATE A SET A.FIsStatistics=0 FROM dbo.T_SAL_ORDER A WHERE A.FID IN ({successNo})"; int rows = DBServiceHelper.Execute(this.Context, sql); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "更新是否统计结果:" + rows); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量提交开始时间" + DateTime.Now.ToString()); string mes = client.Submit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"SelectedPostId\":0,\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量提交结束时间" + DateTime.Now.ToString()); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量提交结果:" + mes); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量审核开始时间" + DateTime.Now.ToString()); string mess = client.Audit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量审核结束时间" + DateTime.Now.ToString()); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量审核结果:" + mess); //dictionary.Add(billno, "拆单成功!"); } else { if (successNo.Length > 0) { string deletestr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "原单删除失败--拆单成功的单据删除结果:" + deletestr); dictionary.Add(billno, "拆单失败,详细原因:原单删除失败!"); } } } else { if (successNo.Length > 0) { string unaduitstr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "原单反审核失败--拆单成功的单据删除结果:" + unaduitstr); dictionary.Add(billno, "拆单失败,详细原因:原单反审核失败!"); } } } else { if (successNo.Length > 0) { string spiltstr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}"); WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "原单拆单失败--拆单成功的单据删除结果:" + spiltstr); dictionary.Add(billno, "拆单失败,详细原因:原单拆单失败!"); } } #region 第一版 //if (curr) //{ // string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "拆单暂存失败,进行原单反审核:" + UnAuditResult); //} //else //{ // savejsonlist = savejsonlist.Substring(0, savejsonlist.Length - 1); // idlist = idlist.Substring(0, idlist.Length - 1); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "JSON:" + savejsonlist); // //拆单暂存完后删除原单据,在对暂存单据进行保存 // string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "反审核结果:" + UnAuditResult); // JObject UnAuditResultObj = JObject.Parse(UnAuditResult); // if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") // { // string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "删除结果:" + DeleteResult); // JObject DeleteResultObj = JObject.Parse(DeleteResult); // if (DeleteResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") // { // string message = client.BatchSave("SAL_SaleOrder", "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量保存结果:" + message); // JObject messageObj = JObject.Parse(message); // if (messageObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE") // { // string str = $@"/*dialect*/UPDATE A // SET A.FLOT=A.FLotTxt,A.FLOT_TEXT=ISNULL(C.FNAME,'') // FROM dbo.T_SAL_ORDERENTRY A(NOLOCK) // JOIN dbo.T_SAL_ORDER B(NOLOCK) ON B.FID = A.FID // JOIN T_BD_LOTMASTER_L C(NOLOCK) ON C.FLOTID=A.FLotTxt // WHERE B.FBILLNO LIKE '%{billno}%'"; // DBServiceHelper.Execute(this.Context, str); // string mes = client.Submit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"SelectedPostId\":0,\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量提交结果:" + mes); // string mess = client.Audit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}"); // WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "批量审核结果:" + mess); // //dictionary.Add(billno, messageObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString()); // } // else // { // dictionary.Add(billno, messageObj["Result"]["ResponseStatus"]["Errors"].ToString()); // } // } // else // { // client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}"); // } // } // else // { // client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}"); // } //} #endregion } catch (Exception ex) { WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "异常信息:" + JsonConvert.SerializeObject(ex)); throw new Exception(ex.Message); } } WriteLog.SAL_SaleOrderSplitBill("订单审核拆单:" + billno, "截止时间:" + DateTime.Now.ToString()); } //对拆单结果进行提示 foreach (var item in dictionary) { ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, "拆单信息:" + item.Value); } //} //else //{ // throw new Exception("金蝶API登录失败!详细原因:1.检查密码是否调整,调整请联系金蝶开发人员。2.请检查网络状况!"); //} } public static class ResultMessage {/// /// 修改提示信息 /// /// /// /// 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.Normal; } } } }