From e24ce0a3ef49cf821deb967d7f553787f54d66af Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Wed, 10 Apr 2024 14:28:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=85=A5=E5=BA=93=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=87=91=E8=9D=B6-=E4=B8=80=E7=9B=B4=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E4=B8=AD=E7=9A=84=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 7 +++ src/WMS.Web.Domain/Entitys/InStock.cs | 13 +++++ src/WMS.Web.Domain/Services/InStockService.cs | 58 +++++++++++-------- 3 files changed, 53 insertions(+), 25 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 7bd4a50d..54dd860f 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -788,6 +788,13 @@ + + + 全部失败 + + + + 重传 diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs index e7c2d3e7..1bc6c4ea 100644 --- a/src/WMS.Web.Domain/Entitys/InStock.cs +++ b/src/WMS.Web.Domain/Entitys/InStock.cs @@ -190,6 +190,19 @@ namespace WMS.Web.Domain.Entitys this.SyncTime = DateTime.Now; } + /// + /// 全部失败 + /// + /// + /// + public void SyncFailAll(string remark, int operateId) + { + this.SuccessSync = SyncStatus.Fail; + this.Remark = remark; + this.OperateId = operateId; + this.SyncTime = DateTime.Now; + } + /// /// 重传 /// diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index a5f46f5a..4b7a3c7a 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -200,7 +200,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(ResultCodes.Box_No_Task_Data); //1.先判断:箱号已经绑定了入库任务单中;备注:其它单据收的提示 - var tast_box = await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo,dto.TaskId); + var tast_box = await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo, dto.TaskId); if (tast_box == null) return Result.ReFailure(ResultCodes.Box_NoBind_Task_Data); @@ -316,17 +316,17 @@ namespace WMS.Web.Domain.Services //1.获取最新的erp明细信息 var billNo_new = await _inStockRepositories.GetLastBillNo(); //erp明细:生成批号 - int new_firstBillNo = billNo_new == null ? 0 : (billNo_new.FirstBillNo.HasValue? billNo_new.FirstBillNo.Value:0); - int new_lastBillNo = billNo_new == null ? 0 : (billNo_new.LastBillNo.HasValue? billNo_new.LastBillNo.Value:0); - entity.ErpDetails.ForEach(x => + int new_firstBillNo = billNo_new == null ? 0 : (billNo_new.FirstBillNo.HasValue ? billNo_new.FirstBillNo.Value : 0); + int new_lastBillNo = billNo_new == null ? 0 : (billNo_new.LastBillNo.HasValue ? billNo_new.LastBillNo.Value : 0); + entity.ErpDetails.ForEach(x => { //物料必须是启动了批号管理才生成批号 - var mat= materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode && m.IsBatchManage==true).FirstOrDefault(); + var mat = materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode && m.IsBatchManage == true).FirstOrDefault(); if (mat != null) { x.GenerateBatchBillNo(new_firstBillNo, new_lastBillNo, mat.IsBatchManage); - new_firstBillNo = x.FirstBillNo??0; - new_lastBillNo = x.LastBillNo??0; + new_firstBillNo = x.FirstBillNo ?? 0; + new_lastBillNo = x.LastBillNo ?? 0; } }); @@ -584,7 +584,7 @@ namespace WMS.Web.Domain.Services foreach (var item in dto.Boxs) { var taskBox = _mapper.Map(item); - taskBox.TaskId = entity.Id; + taskBox.TaskId = entity.Id; taskBox.Receiver(staffId); var current_dto_box_dets = boxEntitys.Where(x => x.Id == item.BoxId).SelectMany(x => x.Details).ToList(); taskBox.Details = _mapper.Map>(current_dto_box_dets); @@ -748,24 +748,32 @@ namespace WMS.Web.Domain.Services erpDetails.Add(item); } - foreach (var s in erpDetails) + if (erpDetails.Count != 0) { - var erp_details = entity.ErpDetails - .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList(); - var erpDto = new ErpPushDto() + foreach (var s in erpDetails) { - RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单 - FormId = FormIdParam.PUR_PurchaseOrder.ToString(), - TargetFormId = FormIdParam.STK_InStock.ToString(), - DetailsId = s.ErpDetailId.ToString(), - IsDraftWhenSaveFail = true//是否需要暂存 - }; - //下推金蝶 - var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService, sc_inStockRepositories); - if (res.result.IsSuccess) - entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo); - else - entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus); + var erp_details = entity.ErpDetails + .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList(); + var erpDto = new ErpPushDto() + { + RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单 + FormId = FormIdParam.PUR_PurchaseOrder.ToString(), + TargetFormId = FormIdParam.STK_InStock.ToString(), + DetailsId = s.ErpDetailId.ToString(), + IsDraftWhenSaveFail = true//是否需要暂存 + }; + //下推金蝶 + var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService, sc_inStockRepositories); + if (res.result.IsSuccess) + entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo); + else + entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus); + } + } + else + { + erpDetails_tags.ForEach(x => { x.SuccessSync = SyncStatus.Fail; }); + entity.SyncFailAll("同步金蝶失败,金蝶存在已审核的采购入库单", loginInfo?.UserInfo?.StaffId ?? 0); } //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱 var isSuccess = await sc_InStockRepositories.Update(entity, true); @@ -824,7 +832,7 @@ namespace WMS.Web.Domain.Services purchaseInStock.Details[0].Lot = new ErpLotSaveDto(); purchaseInStock.Details[0].Lot.Number = erpDetail.BatchBillNo; } - + _logger.LogInformation($"入库单->下推成功 开始保存 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(purchaseInStock)}"); var res_s = await sc_erpService.Save(purchaseInStock, formId); if (!res_s.IsSuccess)