diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index 1159f45b..abdcbbd1 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -75,14 +75,31 @@ namespace WMS.Web.Api.Controllers /// [HttpGet] [Route("GetSourceOrder/{sourceBillNo}")] - public async Task> GetSourceOrder([FromRoute] string sourceBillNo) + public async Task> GetSourceOrder([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) - return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo, InstockType = null }); - return ResultList.ReSuccess(list); + return ResultList.ReSuccess(list); + } + + /// + /// 来源单-编号模糊查询-非采购上架使用-pad + /// + /// + /// + [HttpGet] + [Route("GetSourceOrderNoPurchase/{sourceBillNo}")] + public async Task> GetSourceOrderNoPurchase([FromRoute] string sourceBillNo) + { + 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.GetListInfoBy(new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo, InstockType = null }); + return ResultList.ReSuccess(list); } /// @@ -92,15 +109,32 @@ namespace WMS.Web.Api.Controllers /// [HttpGet] [Route("Adjust/{sourceBillNo}")] - public async Task> Adjust([FromRoute] string sourceBillNo) + public async Task> Adjust([FromRoute] string sourceBillNo) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) - return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); return await _inStockTaskService.Adjust(sourceBillNo); } + /// + /// 来源单的信息校准-非采购上架使用-对应金蝶-pad + /// + /// + /// + [HttpGet] + [Route("AdjustNoPurchase/{sourceBillNo}")] + public async Task> AdjustNoPurchase([FromRoute] string sourceBillNo) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + + return await _inStockTaskService.AdjustNoPurchase(sourceBillNo); + } + + /// /// 采购订单物料明细和箱物料明细-对比-pad /// diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index e7f2d33d..f48ca27e 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -115,6 +115,13 @@ 来源单号 + + + 来源单-编号模糊查询-非采购上架使用-pad + + + + 来源单的信息校准-对应金蝶-pad @@ -122,6 +129,13 @@ + + + 来源单的信息校准-非采购上架使用-对应金蝶-pad + + + + 采购订单物料明细和箱物料明细-对比-pad @@ -349,7 +363,7 @@ 根据箱号获取箱信息 - 必填 + 必填 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 2b4b9815..10091524 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1110,21 +1110,26 @@ 采购订单物料明细和箱物料明细-对比影响对象 - + + + 箱号明细数量的总和 + + + + + 收货和上架需要用的箱的基本信息-对象 + + + 箱号ID - + 箱号 - - - 箱号明细数量的总和 - - 模糊查询来源单据-请求对象 @@ -1140,81 +1145,6 @@ 来源单据类型 - - - 来源单号模糊查询响应对象 - - - - - 单据ID(等同-入库任务单ID) - - - - - 明细ID - - - - - 供应商 - - - - - 组织 - - - - - 来源单号 - - - - - 仓库编码(对应金蝶和单点) - - - - - 仓库名称 - - - - - 物料ID - - - - - 物料名称 - - - - - 物料编码 - - - - - 物料规格型号 - - - - - 订单数量 - - - - - 已交数量 - - - - - 明细备注 - - 入库任务单明细详情 @@ -1285,6 +1215,201 @@ 明细 + + + 来源单模糊查询响应-非采购-对象 + + + + + 单据ID(等同-入库任务单ID) + + + + + 来源单号 + + + + + 箱信息 + + + + + 明细 + + + + + 箱信息 + + + + + ID + + + + + 单据ID(等同-入库任务单ID) + + + + + 箱信息ID + + + + + 箱号 + + + + + 来源单模糊查询响应明细-非采购-对象 + + + + + 单据ID(等同-入库任务单ID) + + + + + 明细ID + + + + + 供应商 + + + + + 组织 + + + + + 仓库编码(对应金蝶和单点) + + + + + 仓库名称 + + + + + 物料ID + + + + + 物料名称 + + + + + 物料编码 + + + + + 物料规格型号 + + + + + 订单数量 + + + + + 已交数量 + + + + + 明细备注 + + + + + 来源单号模糊查询响应对象 + + + + + 单据ID(等同-入库任务单ID) + + + + + 明细ID + + + + + 供应商 + + + + + 组织 + + + + + 来源单号 + + + + + 仓库编码(对应金蝶和单点) + + + + + 仓库名称 + + + + + 物料ID + + + + + 物料名称 + + + + + 物料编码 + + + + + 物料规格型号 + + + + + 订单数量 + + + + + 已交数量 + + + + + 明细备注 + + 箱信息和任务单绑定 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 754726b8..8f565c32 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1411,6 +1411,13 @@ + + + 列表-根据来源单模糊查询-非采购上架使用 + + + + 批量添加 @@ -1652,7 +1659,14 @@ - 来源单-与金蝶校准-第二步-pad + 来源单-与金蝶校准-第二步-pad:这个只针对采购订单 + + + + + + + 来源单-与金蝶校准-第二步-pad:这个是非采购订单上架使用 @@ -1665,6 +1679,14 @@ + + + 同步:其他入库类型单据 + + + + + 出库服务 @@ -2454,7 +2476,7 @@ - 非采购单上架-按箱 + 非采购单上架 @@ -2478,7 +2500,7 @@ - 非采购上架-按箱-保存 + 非采购上架-保存 @@ -2519,7 +2541,14 @@ - 来源单-与金蝶校准-第二步-pad + 来源单-与金蝶校准-第二步-pad:这个只针对采购订单 + + + + + + + 来源单-与金蝶校准-第二步-pad:这个是非采购订单上架使用 @@ -3244,12 +3273,12 @@ - + 同步金蝶操作 - + diff --git a/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsResponse.cs index bdd06a80..f513f34e 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsResponse.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsResponse.cs @@ -7,7 +7,18 @@ namespace WMS.Web.Core.Dto.InStockTask /// /// 采购订单物料明细和箱物料明细-对比影响对象 /// - public class ContrastMaterialsResponse + public class ContrastMaterialsResponse:BoxBaseDto + { + /// + /// 箱号明细数量的总和 + /// + public decimal TotalCount { get; set; } + } + + /// + /// 收货和上架需要用的箱的基本信息-对象 + /// + public class BoxBaseDto { /// /// 箱号ID @@ -18,10 +29,5 @@ namespace WMS.Web.Core.Dto.InStockTask /// 箱号 /// public string BoxBillNo { get; set; } - - /// - /// 箱号明细数量的总和 - /// - public decimal TotalCount { get; set; } } } diff --git a/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoNoPurchaseQueryResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoNoPurchaseQueryResponse.cs new file mode 100644 index 00000000..0ef8aadf --- /dev/null +++ b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoNoPurchaseQueryResponse.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.InStockTask +{ + + /// + /// 来源单模糊查询响应-非采购-对象 + /// + public class SourceBillNoNoPurchaseQueryResponse + { + /// + /// 单据ID(等同-入库任务单ID) + /// + public int Id { get; set; } + + /// + /// 来源单号 + /// + public string SourceBillNo { get; set; } + + /// + /// 箱信息 + /// + public List Boxs { get; set; } + + /// + /// 明细 + /// + public List Details { get; set; } + } + + /// + /// 箱信息 + /// + public class SourceBillNoNoPurchaseBoxQueryResponse + { + /// + /// ID + /// + public int Id { get; set; } = 0; + + /// + /// 单据ID(等同-入库任务单ID) + /// + public int TaskId { get; set; } + + /// + /// 箱信息ID + /// + public int BoxId { get; set; } + + /// + /// 箱号 + /// + public string BoxBillNo { get; set; } + } + + /// + /// 来源单模糊查询响应明细-非采购-对象 + /// + public class SourceBillNoNoPurchaseDetailsQueryResponse + { + /// + /// 单据ID(等同-入库任务单ID) + /// + public int TaskId { get; set; } + + /// + /// 明细ID + /// + public int DetailsId { get; set; } + + /// + /// 供应商 + /// + public int SupplierId { get; set; } + /// + /// 组织 + /// + public int OrgId { get; set; } + + /// + /// 仓库编码(对应金蝶和单点) + /// + public string StockCode { get; set; } + + /// + /// 仓库名称 + /// + public string StockName { get; set; } + + /// + /// 物料ID + /// + public int MaterialId { get; set; } + + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + + /// + /// 订单数量 + /// + public decimal Qty { get; set; } + + + /// + /// 已交数量 + /// + public decimal DeliveredQty { get; set; } + + /// + /// 明细备注 + /// + public string Remark { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs similarity index 97% rename from src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryResponse.cs rename to src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs index ada636dc..4920147e 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBillNoQueryResponse.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs @@ -7,7 +7,7 @@ namespace WMS.Web.Core.Dto.InStockTask /// /// 来源单号模糊查询响应对象 /// - public class InStockTaskBillNoQueryResponse + public class SourceBillNoQueryResponse { /// /// 单据ID(等同-入库任务单ID) diff --git a/src/WMS.Web.Domain/IService/IInStockTaskService.cs b/src/WMS.Web.Domain/IService/IInStockTaskService.cs index 7a69ebe6..32f84260 100644 --- a/src/WMS.Web.Domain/IService/IInStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/IInStockTaskService.cs @@ -13,11 +13,18 @@ namespace WMS.Web.Domain.IService public interface IInStockTaskService { /// - /// 来源单-与金蝶校准-第二步-pad + /// 来源单-与金蝶校准-第二步-pad:这个只针对采购订单 /// /// /// - Task> Adjust(string sourceBillNo); + Task> Adjust(string sourceBillNo); + + /// + /// 来源单-与金蝶校准-第二步-pad:这个是非采购订单上架使用 + /// + /// + /// + Task> AdjustNoPurchase(string sourceBillNo); /// /// 同步:采购入库类型单据 /// @@ -25,5 +32,13 @@ namespace WMS.Web.Domain.IService /// /// Task SsynPurchaseInStock(List billNos = null, bool isTransaction=true); + + /// + /// 同步:其他入库类型单据 + /// + /// + /// + /// + Task SysnMiscellaneous(List billNos = null, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs index fdeb6447..56c65f21 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs @@ -76,7 +76,15 @@ namespace WMS.Web.Domain.Infrastructure /// /// /// - Task> GetListBy(InStockTaskBillNoQueryRequest dto); + Task> GetListBy(InStockTaskBillNoQueryRequest dto); + + + /// + /// 列表-根据来源单模糊查询-非采购上架使用 + /// + /// + /// + Task> GetListInfoBy(InStockTaskBillNoQueryRequest dto); /// /// 批量添加 diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 56da6549..262e0913 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -116,7 +116,7 @@ namespace WMS.Web.Domain.Services } /// - /// 非采购单上架-按箱 + /// 非采购单上架 /// /// /// @@ -203,7 +203,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(ResultCodes.DateWriteError); } /// - /// 非采购上架-按箱-保存 + /// 非采购上架-保存 /// /// /// diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index ac75fcb6..1fa352c2 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -41,11 +41,11 @@ namespace WMS.Web.Domain.Services } /// - /// 来源单-与金蝶校准-第二步-pad + /// 来源单-与金蝶校准-第二步-pad:这个只针对采购订单 /// /// /// - public async Task> Adjust(string sourceBillNo) + public async Task> Adjust(string sourceBillNo) { //1.事务 IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); @@ -55,20 +55,55 @@ namespace WMS.Web.Domain.Services //2.查看是否有入库任务单 var task = await _inStockTaskRepositories.GetBySource(sourceBillNo); if (task == null) - return ResultList.ReFailure(ResultCodes.OrderNoData); + return ResultList.ReFailure(ResultCodes.OrderNoData); + + //3.有的话就同步一下金蝶的数据 + var billNos = new List(); + billNos.Add(sourceBillNo); + //3.1采购订单类型-进去金蝶交互更新 + if (task.Type == InstockType.Purchase) + { + var result = await this.SsynPurchaseInStock(billNos, isTransaction); + if (!result.IsSuccess) isRollback = true; + } + + //4.提交事务 + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return ResultList.ReFailure(ResultCodes.AdjustError); + + + //5.再一次查询新的数据:并返回最后的结果 + var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo }; + var list = await _inStockTaskRepositories.GetListBy(request); + return ResultList.ReSuccess(list); + } + + /// + /// 来源单-与金蝶校准-第二步-pad:这个是非采购订单上架使用 + /// + /// + /// + public async Task> AdjustNoPurchase(string sourceBillNo) + { + //1.事务 + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); + bool isRollback = false; + bool isTransaction = false; + + //2.查看是否有入库任务单 + var task = await _inStockTaskRepositories.GetBySource(sourceBillNo); + if (task == null) + return ResultList.ReFailure(ResultCodes.OrderNoData); //3.有的话就同步一下金蝶的数据 var billNos = new List(); billNos.Add(sourceBillNo); //3.1这里要对入库任务单的类型逐一判断,进行去ErpService找对应的单据类型重新获取;这里只有采购,后面再加其它的 - if (task.Type == InstockType.Purchase) + if (task.Type == InstockType.Miscellaneous) { - var result = await this.SsynPurchaseInStock(billNos, isTransaction); + var result = await this.SysnMiscellaneous(billNos, isTransaction); if (!result.IsSuccess) isRollback = true; - } - else if (task.Type == InstockType.Miscellaneous) - { - } else if (task.Type == InstockType.Assembled) { @@ -82,18 +117,16 @@ namespace WMS.Web.Domain.Services { } - - //4.提交事务 var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) - return ResultList.ReFailure(ResultCodes.AdjustError); + return ResultList.ReFailure(ResultCodes.AdjustError); //5.再一次查询新的数据:并返回最后的结果 var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo }; - var list = await _inStockTaskRepositories.GetListBy(request); - return ResultList.ReSuccess(list); + var list = await _inStockTaskRepositories.GetListInfoBy(request); + return ResultList.ReSuccess(list); } /// diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index 58567c11..5aa9494d 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -259,7 +259,7 @@ namespace WMS.Web.Repositories /// /// /// - public async Task> GetListBy(InStockTaskBillNoQueryRequest dto) + public async Task> GetListBy(InStockTaskBillNoQueryRequest dto) { //1.获取物料集合 var materials_result = await _erpService.BillQueryForMaterial(); @@ -276,7 +276,7 @@ namespace WMS.Web.Repositories if(dto.InstockType.HasValue) query = query.Where(w => (int)w.order.Type == dto.InstockType.Value); - var list = await query.Select(s => new InStockTaskBillNoQueryResponse() + var list = await query.Select(s => new SourceBillNoQueryResponse() { Id=s.order.Id, DetailsId=s.detail.Id, @@ -297,7 +297,72 @@ namespace WMS.Web.Repositories } - + + /// + /// 列表-根据来源单模糊查询-非采购上架使用 + /// + /// + /// + public async Task> GetListInfoBy(InStockTaskBillNoQueryRequest dto) + { + //1.获取物料集合 + var materials_result = await _erpService.BillQueryForMaterial(); + var materials = new List(); + if (materials_result.IsSuccess) + materials = materials_result.Data.ToList(); + + //这里只查状态为:部分入库和等待收货 + var task_query = _context.InStockTask + .Where(w => EF.Functions.Like(w.SourceBillNo, "%" + dto.SourceBillNo + "%") && (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait)); + + if (dto.InstockType.HasValue) + task_query = task_query.Where(w => (int)w.Type == dto.InstockType.Value); + //找到头列表 + var taskList = await task_query + .Select(x=>new SourceBillNoNoPurchaseQueryResponse() + { + Id=x.Id, + SourceBillNo=x.SourceBillNo + }).ToListAsync(); + if (taskList != null && taskList.Count != 0) + { + var ids = taskList.Select(x => x.Id).ToList(); + //找明细 + var task_details = await _context.InStockTaskDetails.Where(x => ids.Contains(x.Fid)) + .Select(s=>new SourceBillNoNoPurchaseDetailsQueryResponse() + { + TaskId=s.Fid, + SupplierId = s.SupplierId, + OrgId = s.OrgId, + MaterialId = s.MaterialId, + StockCode = s.StockCode, + StockName = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.StockCode), + MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialId), + MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.MaterialId), + Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialId), + Qty = s.AccruedQty, + DeliveredQty = s.DeliveredQty, + Remark = s.Remark + }).ToListAsync(); + //找箱 + var task_box = await _context.InstockTaskBox.Where(x => ids.Contains(x.TaskId)) + .Select(s => new SourceBillNoNoPurchaseBoxQueryResponse() + { + Id = s.Id, + TaskId=s.TaskId, + BoxId = s.BoxId, + BoxBillNo = s.BoxBillNo + }).ToListAsync(); + //对应头赋值:明细和箱 + foreach (var item in taskList) + { + item.Details = task_details.Where(x => x.TaskId == item.Id).ToList(); + item.Boxs = task_box.Where(x => x.TaskId == item.Id).ToList(); + } + } + return taskList; + } + /// /// 批量添加