diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index 08dc39d1..32633471 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -81,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(new InStockTaskBillNoQueryRequest() { SourceBillNo=code,Type= (int)InstockType.Purchase }); + var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo=code,InstockType= (int)InstockType.Purchase }); return ResultList.ReSuccess(list); } @@ -92,7 +92,24 @@ namespace WMS.Web.Api.Controllers /// [HttpGet] [Route("GetSourceOrder/{code}")] - public async Task> InStockTask([FromRoute] string code) + public async Task> GetSourceOrder([FromRoute] string code) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + + var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo = code, InstockType = null }); + return ResultList.ReSuccess(list); + } + + /// + /// 来源单的信息校准-对应金蝶-pad + /// + /// + /// + [HttpGet] + [Route("Adjust/{code}")] + public async Task> Adjust([FromRoute] string code) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 3cb696f0..63950280 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -115,13 +115,20 @@ - + 来源单-编号模糊查询-pad + + + 来源单的信息校准-对应金蝶-pad + + + + 采购订单物料明细和箱物料明细-对比-pad diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index dd273951..a7d05bbc 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1070,6 +1070,21 @@ 箱号明细数量的总和 + + + 模糊查询来源单据-请求对象 + + + + + 来源单据编号 + + + + + 来源单据类型 + + 来源单号模糊查询响应对象 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 651f46db..afbb332b 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2459,7 +2459,7 @@ - 来源单-编号模糊查询-pad + 来源单-与金蝶校准-第二步-pad diff --git a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs index a76e9c8c..6720ddb8 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryRequest.cs @@ -4,10 +4,19 @@ using System.Text; namespace WMS.Web.Core.Dto.InStockTask { + /// + /// 模糊查询来源单据-请求对象 + /// public class InStockTaskBillNoQueryRequest { + /// + /// 来源单据编号 + /// public string SourceBillNo { get; set; } - public int? Type { get; set; } + /// + /// 来源单据类型 + /// + public int? InstockType { get; set; } } } diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 4abfdbfd..2c72484a 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -19,7 +19,7 @@ namespace WMS.Web.Domain.Services /// /// 入库任务单-服务 /// - public class InStockTaskService: IInStockTaskService + public class InStockTaskService : IInStockTaskService { private readonly IMapper _mapper; private readonly IErpService _erpService; @@ -40,7 +40,7 @@ namespace WMS.Web.Domain.Services } /// - /// 来源单-编号模糊查询-pad + /// 来源单-与金蝶校准-第二步-pad /// /// /// @@ -52,19 +52,41 @@ namespace WMS.Web.Domain.Services bool isTransaction = false; //2.查看是否有入库任务单 - var tasks= await _inStockTaskRepositories.GetListBy(sourceBillNo); - if (tasks == null || tasks.Count == 0) - return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(ResultCodes.OrderNoData); + var task = await _inStockTaskRepositories.GetBy(sourceBillNo); + if (task == null) + return ResultList.ReFailure(ResultCodes.OrderNoData); //3.有的话就同步一下金蝶的数据 - var billNos = tasks.Select(x => x.SourceBillNo).ToList(); - var result=await this.SsynPurchaseInStock(billNos, isTransaction); - if (!result.IsSuccess) isRollback = true; + var billNos = new List(); + billNos.Add(sourceBillNo); + //3.1这里要对入库任务单的类型逐一判断,进行去ErpService找对应的单据类型重新获取;这里只有采购,后面再加其它的 + if (task.Type == InstockType.Purchase) + { + var result = await this.SsynPurchaseInStock(billNos, isTransaction); + if (!result.IsSuccess) isRollback = true; + } + else if (task.Type == InstockType.Miscellaneous) + { + + } + else if (task.Type == InstockType.Assembled) + { + + } + else if (task.Type == InstockType.Stkdirecttransfers) + { + + } + else if (task.Type == InstockType.StktransferInst) + { + + } + //4.提交事务 var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) - return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(result.Message, result.Status); + return ResultList.ReFailure(ResultCodes.AdjustError); //5.再一次查询新的数据:并返回最后的结果 @@ -78,12 +100,12 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task SsynPurchaseInStock(List billNos=null,bool isTransaction=true) + public async Task SsynPurchaseInStock(List billNos = null, bool isTransaction = true) { //1.获取金蝶数据:采购订单数据 - var erp_result= await _erpService.BillQueryForPurchaseInStock(billNos); + var erp_result = await _erpService.BillQueryForPurchaseInStock(billNos); if (!erp_result.IsSuccess) - return Result.ReFailure(erp_result.Message,erp_result.Status); + return Result.ReFailure(erp_result.Message, erp_result.Status); var erp_list = erp_result.Data; //2.通过单据编号找到wms系统现有的任务单;并修改 @@ -96,12 +118,12 @@ namespace WMS.Web.Domain.Services var data_list_details = data_list.SelectMany(x => x.Details).ToList(); foreach (var item in data_list_details) { - var data= data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); + var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); //2.1.1对比erp的物料信息 - var erp_data = erp_list.Where(x =>x.FBillNo==data.SourceBillNo && x.FMaterialId == item.MaterialId).FirstOrDefault(); + var erp_data = erp_list.Where(x => x.FBillNo == data.SourceBillNo && x.FMaterialId == item.MaterialId).FirstOrDefault(); if (erp_data != null) - { + { //2.1.2修改数量 item.AccruedQty = erp_data.FQty; item.DeliveredQty = erp_data.FStockInQty; @@ -133,7 +155,7 @@ namespace WMS.Web.Domain.Services dto.Create(InstockType.Purchase); //找到当前对应来源单据编号的集合数据 - var current_erp_details= erp_list.Where(x => x.FBillNo == item).ToList(); + var current_erp_details = erp_list.Where(x => x.FBillNo == item).ToList(); //给到dto的实体明细中 dto.Details = _mapper.Map>(current_erp_details); add_entitys.Add(dto); diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 9314d10c..685200e0 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -40,6 +40,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple ErpStockError = (80006, "获取Erp相关仓库数据失败,请稍候再试!"); public static ValueTuple ErpMaterialError = (80007, "获取Erp相关物料数据失败,请稍候再试!"); public static ValueTuple BoxHaveError = (80008, "该箱信息已被记录,请重新选择箱号!"); + public static ValueTuple AdjustError = (80009, "与金蝶校准发生错误,请稍候再试!"); } } diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index c846b843..0a679303 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -257,8 +257,8 @@ namespace WMS.Web.Repositories .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%") && (w.order.Status== InstockStatus.Part || w.order.Status==InstockStatus.Wait)); - if(dto.Type.HasValue) - query = query.Where(w => (int)w.order.Type == dto.Type.Value); + if(dto.InstockType.HasValue) + query = query.Where(w => (int)w.order.Type == dto.InstockType.Value); var list = await query.Select(s => new InStockTaskBillNoQueryResponse() {