From dcfc5c5d63f9d4868c759b0bf7ac70549e2304ae Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 13 Nov 2023 11:33:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=8F=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 32 +++++++ .../Services/OutStockService.cs | 6 +- .../Services/SerialNumberService.cs | 92 ++++++++++++++++++- .../Values/SerialNumberOperateType.cs | 25 +++++ 4 files changed, 149 insertions(+), 6 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index dff909c0..96fc08e0 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3538,6 +3538,13 @@ + + + 出库单类型转化序列号记录类型 + + + + 序列号操作记录日志 @@ -3941,6 +3948,31 @@ 改箱 + + + 销售出库 + + + + + 其他出库 + + + + + 直接调拨出库 + + + + + 分步式出库 + + + + + 组装拆卸出库 + + 非采购上架方式 diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 9b6b22ce..0775bc3e 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -30,10 +30,11 @@ namespace WMS.Web.Domain.Services private readonly IOutStockTaskRepositories _outStockTaskRepositories; private readonly IOutStockTaskService _outStockTaskService; private readonly IErpService _erpService; + private readonly ISerialNumberService _serialNumberService; public OutStockService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, - IOutStockTaskService outStockTaskService, IErpService erpService) + IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService) { _mapper = mapper; _loginService = loginService; @@ -42,6 +43,7 @@ namespace WMS.Web.Domain.Services _outStockTaskRepositories = outStockTaskRepositories; _outStockTaskService = outStockTaskService; _erpService = erpService; + _serialNumberService = serialNumberService; } /// /// 出库单 @@ -88,6 +90,8 @@ namespace WMS.Web.Domain.Services if (entity == null) isRollback = true; outStockTask = await _outStockTaskRepositories.Edit(outStockTask, false); if (outStockTask == null) isRollback = true; + var res_change = await _serialNumberService.OutStock(entity, loginInfo, false); + if (!res_change.IsSuccess) isRollback = true; //提交事务 isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 3d65c963..ae3548a0 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -25,15 +25,17 @@ namespace WMS.Web.Domain.Services public readonly IBasicsRepositories _transactionRepositories; public readonly IBoxRepositories _boxRepositories; private readonly ISingleDataService _singleDataService; + private readonly IErpService _erpService; public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories, ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories, - IBoxRepositories boxRepositories, ISingleDataService singleDataService) + IBoxRepositories boxRepositories, ISingleDataService singleDataService, IErpService erpService) { _serialNumberOperateRepositories = serialNumberOperateRepositories; _serialNumbersRepositories = serialNumbersRepositories; _transactionRepositories = transactionRepositories; _boxRepositories = boxRepositories; _singleDataService = singleDataService; + _erpService = erpService; } /// /// 改箱 @@ -77,8 +79,8 @@ namespace WMS.Web.Domain.Services //取目标箱子仓位 记录目标箱仓位号 //if (moveBoxRecord.Type == MoveBoxType.Up) //{ - //var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId); - //op.Remark += "\r\n" + "仓位:" + srcSubStock; + //var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId); + //op.Remark += "\r\n" + "仓位:" + srcSubStock; //} sList.Add(op); } @@ -167,10 +169,90 @@ namespace WMS.Web.Domain.Services /// /// /// - public Task OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true) + public async Task OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true) { - throw new NotImplementedException(); + //获取序列号信息 + var serialNumbers = outStock.Details.SelectMany(s => s.SerialNumbers).ToList(); + var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers); + var boxIds = entityList.Select(s => s.BoxId).ToList(); + var boxList = await _boxRepositories.GetEntityList(boxIds); + var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId); + + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _transactionRepositories.GetTransaction(); + bool isRollback = false; + bool isSuccess = true; + List sList = new List(); + foreach (var entity in entityList) + { + var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); + //修改序列号和箱绑定关系 + entity.OutStock(outStock.BillNo); + + //记录序列号操作日志 + SerialNumberOperate op = new SerialNumberOperate() + { + MaterialId = entity.MaterialId, + SerialNumber = entity.SerialNumber, + OrgId = box.OrgId, + SupplierId = box.SupplierId, + OperateTime = DateTime.Now, + OperateType = OutStockTypeConvert(outStock.Type), + OperateUser = userName, + Remark = "来源单号:" + outStock.SourceBillNo + "\r\n" + "出库单号:" + outStock.BillNo + }; + if (outStock.Type == OutStockType.Sal) + { + var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); + var res_c = await _erpService.BillQueryForCustomer(); + var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId); + op.Remark += "\r\n" + "销售订单号:" + detail.SaleBillNo; + op.Remark += "\r\n" + "客户:" + customer?.Name; + } + sList.Add(op); + } + isSuccess = await _serialNumbersRepositories.EditEntityList(entityList, false); + //序列号操作记录 + var res = await this.SerialNumberOperate(sList, false); + //提交事务 + if (isTransaction) + { + if (!isSuccess) isRollback = true; + if (!res.Success) isRollback = true; + isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return Result.ReFailure(ResultCodes.DateWriteError); + } + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError); + + return Result.ReSuccess(); } + /// + /// 出库单类型转化序列号记录类型 + /// + /// + /// + private SerialNumberOperateType OutStockTypeConvert(OutStockType type) + { + switch (type) + { + case OutStockType.Sal: + return SerialNumberOperateType.Sal_Out; + case OutStockType.Assembled: + return SerialNumberOperateType.Assembled_Out; + case OutStockType.Miscellaneous: + return SerialNumberOperateType.Miscellaneous_Out; + case OutStockType.Stkdirecttransfers: + return SerialNumberOperateType.Stkdirecttransfers_Out; + case OutStockType.StktransferInst: + return SerialNumberOperateType.StktransferInst_Out; + default: + return SerialNumberOperateType.StktransferInst_Out; + } + } + /// /// 序列号操作记录日志 /// diff --git a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs index 5198ad40..83e30ac1 100644 --- a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs +++ b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs @@ -33,5 +33,30 @@ namespace WMS.Web.Domain.Values /// [EnumRemark("改箱")] ChangeBox = 4, + /// + /// 销售出库 + /// + [EnumRemark("销售出库")] + Sal_Out = 5, + /// + /// 其他出库 + /// + [EnumRemark("其他出库")] + Miscellaneous_Out = 6, + /// + /// 直接调拨出库 + /// + [EnumRemark("直接调拨出库")] + Stkdirecttransfers_Out = 7, + /// + /// 分步式出库 + /// + [EnumRemark("分步式出库")] + StktransferInst_Out = 8, + /// + /// 组装拆卸出库 + /// + [EnumRemark("组装拆卸出库")] + Assembled_Out = 9, } } From a28c7920730928da7e42b39b1ad0690721f2353e Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 13 Nov 2023 11:49:48 +0800 Subject: [PATCH 2/3] =?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.Repositories/SerialNumbersRepositories.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 39263271..6fe0c34f 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -138,12 +138,13 @@ namespace WMS.Web.Repositories return response; } var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber)); + if (entity == null) return new MaterialResponse(); response.SerialNumber = entity.SerialNumber; response.MaterialId = entity.MaterialId; response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId); response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId); response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialId); - return new MaterialResponse(); + return response; } } } From 4e2dc4908c70a1cf71c59d95e0ec7d462ac6a785 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 13 Nov 2023 11:59:03 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/SysConfigController.cs | 3 ++- src/WMS.Web.Domain/Values/ResultCodes.cs | 1 + src/WMS.Web.Repositories/SerialNumbersRepositories.cs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 74db4063..e5cfab25 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -272,7 +272,8 @@ namespace WMS.Web.Api.Controllers return Result.ReFailure(ResultCodes.Token_Invalid_Error); var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber); - + if (res == null) return Result.ReFailure(ResultCodes.MateriaNoData); + return Result.ReSuccess(res); } } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 685200e0..04f86b86 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -29,6 +29,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple BoxNoData = (80000, "箱信息不存在"); public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在"); + public static ValueTuple MateriaNoData = (800011, "物料信息不存在"); public static ValueTuple ErpStockNoData = (900000, "Erp仓库信息不完整"); public static ValueTuple Box_NoBind_Task_Data = (80001, "该箱号不在收货信息中,请核对再试!"); diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 6fe0c34f..d683b955 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -138,7 +138,7 @@ namespace WMS.Web.Repositories return response; } var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber)); - if (entity == null) return new MaterialResponse(); + if (entity == null) return null; response.SerialNumber = entity.SerialNumber; response.MaterialId = entity.MaterialId; response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId);