From 81bd764a723af93282ef429b59e9f0b712939e9a Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 25 Apr 2024 15:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 26 ++++++++++- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 8 ++++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 12 ++++- .../IService/IInStockService.cs | 8 ++++ src/WMS.Web.Domain/Services/InStockService.cs | 44 ++++++++++++++++--- 5 files changed, 89 insertions(+), 9 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 6ab7acc5..01181a8a 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -53,12 +53,14 @@ namespace WMS.Web.Api.Controllers private readonly IMaterialService _materialService; private readonly IMemoryCache _memoryCache; private readonly IRedisConcurrentProcessService _redisConcurrentProcessService; + private IInStockService _inStockService; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IRedisConcurrentProcessService redisConcurrentProcessService, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IMemoryCache memoryCache, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions options, ILoginService loginService, ISendMessageService sendMessageService, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, - IWebHostEnvironment env, IMaterialService materialService, IOutStockRepositories outStockRepositories) + IWebHostEnvironment env, IMaterialService materialService, IOutStockRepositories outStockRepositories, IInStockService inStockService) { + _inStockService = inStockService; _redisConcurrentProcessService = redisConcurrentProcessService; _memoryCache = memoryCache; _materialService = materialService; @@ -424,5 +426,27 @@ namespace WMS.Web.Api.Controllers var data=await _erpService.BillQueryForPurchaseInStockBy("1541693",null); return true; } + + /// + /// 测试-重传 + /// + /// + /// + /// + [HttpGet] + [Route("sync/{id}")] + public async Task sync([FromRoute]int id,[FromQuery] int errorType) + { + + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + + var part = new OperateRequest(); + part.Ids = new List(); + part.Ids.Add(id); + return await _inStockService.Sync(part, loginInfo, errorType); + + } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 56d984d6..fad2b6cc 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -837,5 +837,13 @@ + + + 测试-重传 + + + + + diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index dc97d658..4aa53e67 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3524,6 +3524,14 @@ + + + 同步金蝶 + + + + + 收货 @@ -5171,7 +5179,7 @@ - + 采购:同步金蝶 @@ -5179,7 +5187,7 @@ - + 下推 diff --git a/src/WMS.Web.Domain/IService/IInStockService.cs b/src/WMS.Web.Domain/IService/IInStockService.cs index 911d6ed0..dfb766ca 100644 --- a/src/WMS.Web.Domain/IService/IInStockService.cs +++ b/src/WMS.Web.Domain/IService/IInStockService.cs @@ -26,6 +26,14 @@ namespace WMS.Web.Domain.IService /// Task Sync(OperateRequest dto, LoginInDto loginInfo, bool isRepeatSync = true); + /// + /// 同步金蝶 + /// + /// + /// + /// + Task Sync(OperateRequest dto, LoginInDto loginInfo, int errorType); + /// /// 收货 /// diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 8e71e9d5..226b37f2 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -103,7 +103,28 @@ namespace WMS.Web.Domain.Services { foreach (var entity in list) { - var res = await this.PurchaseInStock(entity, loginInfo); + var res = await this.PurchaseInStock(entity, loginInfo, 0); + if (!res.IsSuccess) + _logger.LogError($"入库单同步失败:{res.Message}"); + } + }); + return Task.FromResult(Result.ReSuccess()); + } + + public Task Sync(OperateRequest dto, LoginInDto loginInfo, int errorType) + { + var list = _inStockRepositories.GetList(dto.Ids).GetAwaiter().GetResult(); + var isSuccess = true; + + list = list.Where(w => w.SuccessSync == SyncStatus.Fail).ToList(); + list.ForEach(f => f.RepeatSync()); + isSuccess = _inStockRepositories.UpdateRange(list, true).GetAwaiter().GetResult(); + + Task.Run(async () => + { + foreach (var entity in list) + { + var res = await this.PurchaseInStock(entity, loginInfo, errorType); if (!res.IsSuccess) _logger.LogError($"入库单同步失败:{res.Message}"); } @@ -827,7 +848,7 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task PurchaseInStock(InStock entity, LoginInDto loginInfo) + private async Task PurchaseInStock(InStock entity, LoginInDto loginInfo, int errorType) { _logger.LogInformation($"采购下推-同步:{JsonConvert.SerializeObject(entity)} 操作人:{loginInfo.UserInfo.StaffId}"); var scope = _serviceScopeFactory.CreateScope(); @@ -892,7 +913,7 @@ namespace WMS.Web.Domain.Services else { //下推金蝶 - var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories); + var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories, errorType); if (res.result.IsSuccess) entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo); else @@ -916,7 +937,7 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task<(Result result, SyncStatus syncStatus, string erpBillNo, string instockDetailId)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IErpService sc_erpService, IInStockRepositories sc_inStockRepositories) + private async Task<(Result result, SyncStatus syncStatus, string erpBillNo, string instockDetailId)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IErpService sc_erpService, IInStockRepositories sc_inStockRepositories, int errorType) { var erp_instock_detId = string.Empty; try @@ -935,8 +956,10 @@ namespace WMS.Web.Domain.Services purchaseInStock.Details[0].Qty = erpDetail.Qty; string formId = dto.TargetFormId.ToString(); erp_instock_detId = purchaseInStock.Details[0].DetailId; - - //var tt = Convert.ToInt32("abc"); + if (errorType == 1) + { + int tt = Convert.ToInt32("abc"); + } //批号生成和同步 if (string.IsNullOrEmpty(erpDetail.BatchBillNo)) { @@ -972,6 +995,10 @@ namespace WMS.Web.Domain.Services _logger.LogInformation($"入库单->保存失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}"); return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, "", purchaseInStock.Details[0].DetailId); } + if (errorType == 2) + { + int tt = Convert.ToInt32("abc"); + } //提交 _logger.LogInformation($"入库单->保存成功 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}"); ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data @@ -981,6 +1008,11 @@ namespace WMS.Web.Domain.Services _logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}"); return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First(), purchaseInStock.Details[0].DetailId); } + + if (errorType == 3) + { + int tt = Convert.ToInt32("abc"); + } //审核 _logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}"); resSubmit = await sc_erpService.Audit(o_dto, formId);