From bd4fcdb904d79df8ebf075b5ec51e4ada803bca6 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Fri, 8 Dec 2023 15:32:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 51 +++++++------- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 10 ++- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 11 +++ src/WMS.Web.Core/Dto/Erp/ErpPushDto.cs | 17 +++-- src/WMS.Web.Domain/Entitys/OutStock.cs | 3 +- .../Services/OutStockService.cs | 69 +++++++++++-------- .../Services/Public/ErpService.cs | 15 ++-- src/WMS.Web.Domain/Values/Erp/FormIdParam.cs | 6 +- 8 files changed, 116 insertions(+), 66 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index e60fc394..78bdc562 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -33,10 +33,11 @@ namespace WMS.Web.Api.Controllers private readonly IBoxInventoryRepositories _boxInventoryRepositories; private readonly ITakeStockService _takeStockService; private readonly ITakeStockRepositories _takeStockRepositories; + private readonly IOutStockService _outStockService; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, - ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories) + ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService) { _boxInventoryRepositories = boxInventoryRepositories; this._erpService = erpService; @@ -48,36 +49,40 @@ namespace WMS.Web.Api.Controllers _outStockTaskService = outStockTaskService; _takeStockService = takeStockService; _takeStockRepositories = takeStockRepositories; + _outStockService = outStockService; } [HttpGet] [Route("hj")] public async Task TestHJ() { + OperateRequest dto = new OperateRequest(); + dto.Ids.Add(65); + await _outStockService.Sync(dto, null); // List list = null; //var b= list.FirstOrDefault(f => f.Id == 123); - //var entity=await _takeStockRepositories.GetEntityList(new List() {2 }); - //var r= await _takeStockService.Loss_Profit(entity.First()); - //var list = await GetList(); - var c = await _erpService.BillQueryForAssembledAppOutStock_Assembly(new List() { "ZZCX003061" }, DateTime.Now.AddDays(-10)); - //var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List() { "FHTZD8022232" }, DateTime.Now.AddDays(-10)); - //var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10)); - //var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1)); - // var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10)); - //var b = await _outStockTaskService.Sync(new List() { "FHTZD8022232" }); - //var result = await this._outStockTaskService.Sync(null); - //var t=await _outStockTaskRepositories.Get(1); - // t.Details[0].Remark = "sdf"; - // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; - // var s = await _outStockTaskRepositories.Edit(t); - //await _boxService.Sync(list); - //var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300)); - //var result= await this._erpService.BillQueryForPurchaseInStock(); - //var result = await this._erpService.BillQueryForOrg(); - //var result = await this._erpService.BillQueryForMaterial(); - //if (!result.IsSuccess) - // return ""; - //return JsonConvert.SerializeObject(result.Data); + //var entity=await _takeStockRepositories.GetEntityList(new List() {2 }); + //var r= await _takeStockService.Loss_Profit(entity.First()); + //var list = await GetList(); + //var c = await _erpService.BillQueryForAssembledAppOutStock_Assembly(new List() { "ZZCX003061" }, DateTime.Now.AddDays(-10)); + //var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List() { "FHTZD8022232" }, DateTime.Now.AddDays(-10)); + //var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10)); + //var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1)); + // var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10)); + //var b = await _outStockTaskService.Sync(new List() { "FHTZD8022232" }); + //var result = await this._outStockTaskService.Sync(null); + //var t=await _outStockTaskRepositories.Get(1); + // t.Details[0].Remark = "sdf"; + // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; + // var s = await _outStockTaskRepositories.Edit(t); + //await _boxService.Sync(list); + //var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300)); + //var result= await this._erpService.BillQueryForPurchaseInStock(); + //var result = await this._erpService.BillQueryForOrg(); + //var result = await this._erpService.BillQueryForMaterial(); + //if (!result.IsSuccess) + // return ""; + //return JsonConvert.SerializeObject(result.Data); return ""; } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 9539d957..a5430803 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -775,9 +775,15 @@ 分录内码集合,逗号分隔(分录下推时必录) 注(按分录下推时,单据内码和编码不需要填,否则按整单下推) - + - 目标单据类型内码 + 目标单据类型 + + + + + 是否启用默认转换规则,布尔类型,默认false(非必录) + 开启后则不需要填 RuleId diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 085f8b09..5e98deb1 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3928,6 +3928,12 @@ + + + 同步金蝶销售出库 + + + 下推 @@ -4903,6 +4909,11 @@ 客户 + + + 销售出库单 + + 文件导出状态 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpPushDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpPushDto.cs index 97eb19bf..e32bd6e0 100644 --- a/src/WMS.Web.Core/Dto/Erp/ErpPushDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/ErpPushDto.cs @@ -12,12 +12,12 @@ namespace WMS.Web.Core.Dto.Erp { public ErpPushDto() { } - public ErpPushDto(string formId,string number,List detailIds,string type) + public ErpPushDto(string formId,string number,List detailIds,string targetFormId) { this.FormId = formId; this.Numbers.Add(number); this.DetailsId = detailIds.ToString(); - this.Type = type; + this.TargetFormId = targetFormId; } /// @@ -36,9 +36,16 @@ namespace WMS.Web.Core.Dto.Erp [JsonProperty("EntryIds")] public string DetailsId { get; set; } /// - /// 目标单据类型内码 + /// 目标单据类型 /// - [JsonProperty("TargetBillTypeId")] - public string Type { get; set; } + [JsonProperty("TargetFormId")] + public string TargetFormId { get; set; } + /// + /// 是否启用默认转换规则,布尔类型,默认false(非必录) + /// 开启后则不需要填 RuleId + /// + [JsonProperty("IsEnableDefaultRule")] + public bool IsEnableDefaultRule { get; set; } = true; + } } diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs index 3390fea1..f87d3f9e 100644 --- a/src/WMS.Web.Domain/Entitys/OutStock.cs +++ b/src/WMS.Web.Domain/Entitys/OutStock.cs @@ -140,7 +140,8 @@ namespace WMS.Web.Domain.Entitys var erpd = this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SourceBillNo.Equals(sourcBillNo)).ToList(); erpd.ForEach(f => f.SuccessSync = SyncStatus.Success); //所有erp明细同步成功才是整个单据成功 - if (this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SuccessSync == SyncStatus.Success).Any()) + var erpDetails = this.Details.SelectMany(s => s.ErpDetails); + if (erpDetails.Where(w => w.SuccessSync == SyncStatus.Success).Count()== erpDetails.Count()) { this.SuccessSync = SyncStatus.Success; this.Remark = ""; diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 37c93a76..4c453450 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -77,7 +77,7 @@ namespace WMS.Web.Domain.Services { _logger.LogInformation($"出库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}"); var outStockTask = await _outStockTaskRepositories.Get(dto.TaskId); - if(outStockTask==null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); + if (outStockTask == null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); if (outStockTask.Status == OutStockStatus.Already) return Result.ReFailure(ResultCodes.OutStockTaskAlready); if (outStockTask.Status == OutStockStatus.Repeal) @@ -206,38 +206,47 @@ namespace WMS.Web.Domain.Services var list = await _outStockRepositories.GetEntityList(dto.Ids); foreach (var entity in list) { - if (entity.SuccessSync != SyncStatus.Fail) continue; - List failList = entity.Details.SelectMany(s => s.ErpDetails) - .Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo) - .Select(s => s.Key).ToList();//同步失败的来源单号 - //找到单据里需要同步的单据 - var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key); - foreach (var s in failList) - { - var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList(); - var erpDto = new ErpPushDto() - { - FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(), - Numbers = new List() { s }, - Type = "", - DetailsId = string.Join(",", erp_details) - }; - //下推金蝶 - var res = await this.Push(erpDto); - if (res.IsSuccess) - entity.SyncSuccess(s, loginInfo.UserInfo.StaffId); - else - entity.SyncFail(res.Message, loginInfo.UserInfo.StaffId, SyncStatus.Fail); - } - //entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true; - //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱 - var isSuccess = await _outStockRepositories.Edit(entity, true); - if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError); + await SalOutStock(entity, loginInfo); } - - return Result.ReSuccess(); } + /// + /// 同步金蝶销售出库 + /// + /// + private async Task SalOutStock(OutStock entity, LoginInDto loginInfo) + { + if (entity.Type != OutStockType.Sal) return Result.ReSuccess(); + if (entity.SuccessSync != SyncStatus.Fail) return Result.ReSuccess(); + List failList = entity.Details.SelectMany(s => s.ErpDetails) + .Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo) + .Select(s => s.Key).ToList();//同步失败的来源单号 + //找到单据里需要同步的单据 + var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key); + foreach (var s in failList) + { + var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList(); + var erpDto = new ErpPushDto() + { + FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(), + Numbers = new List() { s }, + TargetFormId = FormIdParam.SAL_OUTSTOCK.ToString(), + DetailsId = string.Join(",", erp_details) + }; + //下推金蝶 + var res = await this.Push(erpDto); + if (res.IsSuccess) + entity.SyncSuccess(s, loginInfo.UserInfo.StaffId); + else + entity.SyncFail(res.Message, loginInfo.UserInfo.StaffId, SyncStatus.Fail); + } + //entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true; + //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱 + var isSuccess = await _outStockRepositories.Edit(entity, true); + if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError); + return Result.ReSuccess(); + } + /// /// 下推 /// diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 65916b0d..c87df3f5 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -1416,7 +1416,7 @@ namespace WMS.Web.Domain.Services.Public if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") return Result.ReSuccess(); - var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); return Result.ReFailure(msg, 10002); } catch (Exception ex) @@ -1448,7 +1448,7 @@ namespace WMS.Web.Domain.Services.Public if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") return Result.ReSuccess(); - var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); return Result.ReFailure(msg, 10002); } catch (Exception ex) @@ -1466,12 +1466,19 @@ namespace WMS.Web.Domain.Services.Public var token_result = await this.Init(); if (!token_result.IsSuccess) return token_result; - var query = new ErpBillQueryDto(token_result.Data); + var query = new ErpBillQueryDto(token_result.Data, dto.FormId); query.Data = JsonConvert.SerializeObject(dto); //下推 var result_json = await _client.PushAsync(JsonConvert.SerializeObject(query)); - return Result.ReSuccess(); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); + + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); + return Result.ReFailure(msg, 10002); } #endregion diff --git a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs index ad225a75..2ca1b5c9 100644 --- a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs +++ b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs @@ -72,6 +72,10 @@ namespace WMS.Web.Domain.Values.Erp /// /// 客户 /// - BD_Customer=16 + BD_Customer=16, + /// + /// 销售出库单 + /// + SAL_OUTSTOCK=17 } }