From d386e4aa41056c3245c5b5a47de5679c383210df Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 9 Nov 2023 16:12:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/InStockTaskController.cs | 12 +- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 130 +++++++++--------- .../InStockTaskBillNoQueryRequest.cs | 13 ++ ...e.cs => InStockTaskBillNoQueryResponse.cs} | 0 .../IService/IInStockTaskService.cs | 9 +- .../IService/Public/IErpService.cs | 2 +- .../IInStockTaskRepositories.cs | 9 +- .../Services/InStockTaskService.cs | 40 +++++- .../Services/Public/ErpService.cs | 9 +- .../InStockTaskRepositories.cs | 23 +++- 10 files changed, 161 insertions(+), 86 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs rename src/WMS.Web.Core/Dto/InStockTask/{InStockTaskResponse.cs => InStockTaskBillNoQueryResponse.cs} (100%) diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index ded6fb28..140696d0 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -23,11 +23,16 @@ namespace WMS.Web.Api.Controllers { private readonly ILoginService _loginService; private readonly IInStockService _inStockService; + private readonly IInStockTaskService _inStockTaskService; private readonly IInStockTaskRepositories _inStockTaskRepositories; - public InStockTaskController(ILoginService loginService, IInStockTaskRepositories inStockTaskRepositories, IInStockService inStockService) + public InStockTaskController(ILoginService loginService, + IInStockTaskService inStockTaskService, + IInStockTaskRepositories inStockTaskRepositories, + IInStockService inStockService) { this._loginService = loginService; this._inStockService = inStockService; + this._inStockTaskService = inStockTaskService; this._inStockTaskRepositories = inStockTaskRepositories; } @@ -76,7 +81,7 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); - var list= await _inStockTaskRepositories.GetListBy(code, InstockType.Purchase); + var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo=code,Type= (int)InstockType.Purchase }); return ResultList.ReSuccess(list); } @@ -93,8 +98,7 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); - var list = await _inStockTaskRepositories.GetListBy(code); - return ResultList.ReSuccess(list); + return await _inStockTaskService.GetPurchaseInstockTask(code); } /// diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 6394ed71..1b8a2f33 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1070,6 +1070,71 @@ 箱号明细数量的总和 + + + 来源单号模糊查询响应对象 + + + + + 单据ID(等同-入库任务单ID) + + + + + 明细ID + + + + + 来源单号 + + + + + 仓库编码(对应金蝶和单点) + + + + + 仓库名称 + + + + + 物料ID + + + + + 物料名称 + + + + + 物料编码 + + + + + 物料规格型号 + + + + + 订单数量 + + + + + 已交数量 + + + + + 明细备注 + + 入库任务单明细详情 @@ -1140,71 +1205,6 @@ 明细 - - - 来源单号模糊查询响应对象 - - - - - 单据ID(等同-入库任务单ID) - - - - - 明细ID - - - - - 来源单号 - - - - - 仓库编码(对应金蝶和单点) - - - - - 仓库名称 - - - - - 物料ID - - - - - 物料名称 - - - - - 物料编码 - - - - - 物料规格型号 - - - - - 订单数量 - - - - - 已交数量 - - - - - 明细备注 - - 箱信息和任务单绑定 diff --git a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs new file mode 100644 index 00000000..a76e9c8c --- /dev/null +++ b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.InStockTask +{ + public class InStockTaskBillNoQueryRequest + { + public string SourceBillNo { get; set; } + + public int? Type { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryResponse.cs similarity index 100% rename from src/WMS.Web.Core/Dto/InStockTask/InStockTaskResponse.cs rename to src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryResponse.cs diff --git a/src/WMS.Web.Domain/IService/IInStockTaskService.cs b/src/WMS.Web.Domain/IService/IInStockTaskService.cs index 5cea3269..320ffe3c 100644 --- a/src/WMS.Web.Domain/IService/IInStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/IInStockTaskService.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Core.Internal.Results; namespace WMS.Web.Domain.IService @@ -11,11 +12,17 @@ namespace WMS.Web.Domain.IService /// public interface IInStockTaskService { + /// + /// 来源单-编号模糊查询-pad + /// + /// + /// + Task> GetPurchaseInstockTask(string sourceBillNo); /// /// 同步:采购入库类型单据 /// /// /// - Task SsynPurchaseInStock(bool isTransaction); + Task SsynPurchaseInStock(List billNos = null, bool isTransaction=true); } } diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 5f686191..25bfaf13 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -19,7 +19,7 @@ namespace WMS.Web.Domain.IService.Public /// erp:单据查询-采购入库单 /// /// - Task> BillQueryForPurchaseInStock(string billNo="", List sourceBillNos = null); + Task> BillQueryForPurchaseInStock(List sourceBillNos = null); /// /// erp:单据查询-出库单 /// diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs index 313846ba..d8e5dd73 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs @@ -57,12 +57,19 @@ namespace WMS.Web.Domain.Infrastructure /// Task> GetListBy(List sourceBillNos); + /// + /// 列表-根据来源单号模糊搜索 + /// + /// + /// + Task> GetListBy(string sourceBillNos); + /// /// 列表-根据来源单号模糊 /// /// /// - Task> GetListBy(string sourceBillNo, InstockType? type=null); + Task> GetListBy(InStockTaskBillNoQueryRequest dto); /// /// 批量添加 diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 660cedca..f3c94058 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -1,10 +1,12 @@ using AutoMapper; +using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto.Erp.Purchase; +using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; @@ -37,16 +39,49 @@ namespace WMS.Web.Domain.Services _inStockTaskRepositories = inStockTaskRepositories; } + /// + /// 来源单-编号模糊查询-pad + /// + /// + /// + public async Task> GetPurchaseInstockTask(string sourceBillNo) + { + //1.事务 + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); + bool isRollback = false; + bool isTransaction = false; + + //2.查看是否有入库任务单 + var tasks= await _inStockTaskRepositories.GetListBy(sourceBillNo); + if (tasks == null || tasks.Count == 0) + return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(ResultCodes.OrderNoData); + + //3.有的话就同步一下金蝶的数据 + var billNos = tasks.Select(x => x.SourceBillNo).ToList(); + var result=await this.SsynPurchaseInStock(billNos, isTransaction); + if (!result.IsSuccess) isRollback = true; + + //4.提交事务 + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(result.Message, result.Status); + + + //5.再一次查询新的数据:并返回最后的结果 + var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo }; + var list = await _inStockTaskRepositories.GetListBy(request); + return ResultList.ReSuccess(list); + } /// /// 同步:采购入库类型单据 /// /// /// - public async Task SsynPurchaseInStock(bool isTransaction) + public async Task SsynPurchaseInStock(List billNos=null,bool isTransaction=true) { //1.获取金蝶数据:采购订单数据 - var erp_result= await _erpService.BillQueryForPurchaseInStock(); + var erp_result= await _erpService.BillQueryForPurchaseInStock(billNos); if (!erp_result.IsSuccess) return Result.ReFailure(erp_result.Message,erp_result.Status); var erp_list = erp_result.Data; @@ -69,6 +104,7 @@ namespace WMS.Web.Domain.Services { //2.1.2修改数量 item.AccruedQty = erp_data.FQty; + item.DeliveredQty = erp_data.FStockInQty; erp_removeList.Add(erp_data); } } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index f00836d1..15813662 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -89,10 +89,9 @@ namespace WMS.Web.Domain.Services.Public /// /// erp:单据查询-采购入库单 /// - /// 模糊搜索 /// 单据编号集合精确查找 /// - public async Task> BillQueryForPurchaseInStock(string billNo="", List sourceBillNos = null) + public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null) { try { @@ -137,12 +136,6 @@ namespace WMS.Web.Domain.Services.Public } param.FilterString = param.FilterString + str + ")"; - //单据编号模糊查询 - if (!string.IsNullOrEmpty(billNo)) - { - param.FilterString = param.FilterString + " and FBillNo like '%"+billNo+"%'"; - } - //根据原订单号查询 if (sourceBillNos != null && sourceBillNos.Count() > 0) { diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index ff6b2e05..c846b843 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -223,12 +223,27 @@ namespace WMS.Web.Repositories return entitys; } + /// + /// 列表-根据来源单号模糊搜索 + /// + /// + /// + public async Task> GetListBy(string sourceBillNos) + { + var entitys = await _context.InStockTask + .Include(s => s.Details) + .Where(w => EF.Functions.Like(w.SourceBillNo, "%" + sourceBillNos + "%")) + .ToListAsync(); + + return entitys; + } + /// /// 列表-根据来源单号模糊 /// /// /// - public async Task> GetListBy(string sourceBillNo, InstockType? type=null) + public async Task> GetListBy(InStockTaskBillNoQueryRequest dto) { //1.获取物料集合 var materials_result = await _erpService.BillQueryForMaterial(); @@ -240,10 +255,10 @@ namespace WMS.Web.Repositories var query = _context.InStockTaskDetails .GroupJoin(_context.InStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) - .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + sourceBillNo + "%") && (w.order.Status== InstockStatus.Part || w.order.Status==InstockStatus.Wait)); + .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%") && (w.order.Status== InstockStatus.Part || w.order.Status==InstockStatus.Wait)); - if(type.HasValue) - query = query.Where(w => w.order.Type == type.Value); + if(dto.Type.HasValue) + query = query.Where(w => (int)w.order.Type == dto.Type.Value); var list = await query.Select(s => new InStockTaskBillNoQueryResponse() {