diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 51babef8..cdfd9c08 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1110,6 +1110,24 @@ 入库单号/采购单号 + + + 移箱 + + 目标箱号 + + + + 出库 + + 出库单号 + + + + 出库 + + 出库单号 + wms盘点单 @@ -1376,6 +1394,9 @@ + + 查询实体集合 + 定时任务最新一次时间管理 @@ -1782,6 +1803,29 @@ 序列号服务 + + + 操作序列号(移箱等) + + + + + + + + 操作序列号(出库操作) + + 序列号 + + + + + 序列号操作记录 + + + + + 盘点单服务 @@ -2523,14 +2567,6 @@ 箱服务信息 - - - 序列号操作记录日志 - - - - - 改箱 移箱服务 @@ -3370,6 +3406,29 @@ 序列号服务 + + + 改箱 + + + + + + + + 操作序列号(出库操作) + + + + + + + 序列号操作记录日志 + + + + + 盘点单服务 diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs index cedf8169..01f87500 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -68,5 +68,31 @@ namespace WMS.Web.Domain.Entitys /// [Column("InStockBillNo")] public string InStockBillNo { get; set; } + + /// + /// 移箱 + /// + /// 目标箱号 + public void Operate(int destBoxId) + { + this.BoxId = destBoxId; + } + /// + /// 出库 + /// + /// 出库单号 + public void OutStock(string outStockBillNo) + { + this.BoxId = 0; + this.OutStockBillNo = outStockBillNo; + } + /// + /// 出库 + /// + /// 出库单号 + public void InStock(string inStockBillNo) + { + this.InStockBillNo = inStockBillNo; + } } } diff --git a/src/WMS.Web.Domain/IService/IBoxService.cs b/src/WMS.Web.Domain/IService/IBoxService.cs index e7455d37..d162ebe2 100644 --- a/src/WMS.Web.Domain/IService/IBoxService.cs +++ b/src/WMS.Web.Domain/IService/IBoxService.cs @@ -12,6 +12,5 @@ namespace WMS.Web.Domain.IService { // 同步老Ops箱信息 Task Sync(); - Task SerialNumberOperate(List list, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/IService/ISerialNumberService.cs b/src/WMS.Web.Domain/IService/ISerialNumberService.cs index 64954ea5..f5d9fcdc 100644 --- a/src/WMS.Web.Domain/IService/ISerialNumberService.cs +++ b/src/WMS.Web.Domain/IService/ISerialNumberService.cs @@ -1,6 +1,11 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.Login; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Entitys; +using WMS.Web.Domain.Values; namespace WMS.Web.Domain.IService { @@ -9,5 +14,25 @@ namespace WMS.Web.Domain.IService /// public interface ISerialNumberService { + /// + /// 操作序列号(移箱等) + /// + /// + /// + /// + Task ChangeBox(List changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true); + /// + /// 操作序列号(出库操作) + /// + /// 序列号 + /// + Task OutStock(List serialNumbers, bool isTransaction = true); + /// + /// 序列号操作记录 + /// + /// + /// + /// + Task SerialNumberOperate(List list, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs index 120193a1..e9a85338 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -27,5 +27,7 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task AddRange(List entitys, bool isTransaction = true); + /// 查询实体集合 + Task> GetEntityList(List ids); } } diff --git a/src/WMS.Web.Domain/Services/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs index 0b8e8b8a..53ffcc13 100644 --- a/src/WMS.Web.Domain/Services/BoxService.cs +++ b/src/WMS.Web.Domain/Services/BoxService.cs @@ -25,13 +25,13 @@ namespace WMS.Web.Domain.Services public readonly IBasicsRepositories _transactionRepositories; private readonly IBoxRepositories _boxRepositories; private readonly IOpsService _opsService; - private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; + private readonly ISerialNumberService _serialNumberService; private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; private readonly ISerialNumbersRepositories _serialNumbersRepositories; public BoxService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, IBoxRepositories boxRepositories, IOpsService opsService, - ISerialNumberOperateRepositories serialNumberOperateRepositories, + ISerialNumberService serialNumberService, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories, ISerialNumbersRepositories serialNumbersRepositories) { @@ -40,7 +40,7 @@ namespace WMS.Web.Domain.Services _transactionRepositories = transactionRepositories; _boxRepositories = boxRepositories; _opsService = opsService; - _serialNumberOperateRepositories = serialNumberOperateRepositories; + _serialNumberService = serialNumberService; _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; _serialNumbersRepositories = serialNumbersRepositories; } @@ -96,7 +96,7 @@ namespace WMS.Web.Domain.Services isSuccess = await _serialNumbersRepositories.AddRange(sList, false); if (!isSuccess) isRollback = true; //序列号操作记录 - var res = await this.SerialNumberOperate(soList, false); + var res = await _serialNumberService.SerialNumberOperate(soList, false); if (!res.Success) isRollback = true; //更新时间管理 isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false); @@ -108,17 +108,5 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } - /// - /// 序列号操作记录日志 - /// - /// - /// - /// - public async Task SerialNumberOperate(List list, bool isTransaction = true) - { - var isSuccess = await _serialNumberOperateRepositories.AddRange(list, isTransaction); - if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); - return Result.ReSuccess(); - } } } diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 44fb65cb..438698b3 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -26,9 +26,11 @@ namespace WMS.Web.Domain.Services public readonly IBasicsRepositories _transactionRepositories; private readonly IMoveBoxRecordRepositories _moveBoxRecordRepositories; private readonly IBoxRepositories _boxRepositories; + private readonly ISerialNumberService _serialNumberService; public ChangeMoveBoxService(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories changeBoxRecordRepositories, IBasicsRepositories transactionRepositories, - IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories) + IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories, + ISerialNumberService serialNumberService) { _mapper = mapper; _loginService = loginService; @@ -36,6 +38,7 @@ namespace WMS.Web.Domain.Services _transactionRepositories = transactionRepositories; _moveBoxRecordRepositories = moveBoxRecordRepositories; _boxRepositories = boxRepositories; + _serialNumberService = serialNumberService; } /// /// 改箱保存 @@ -85,11 +88,11 @@ namespace WMS.Web.Domain.Services bool isSuccess = true; isSuccess = await _changeBoxRecordRepositories.AddRange(list, false); if (!isSuccess) isRollback = true; - + var res_change = await _serialNumberService.ChangeBox(list, loginInfo, false); + if(!res_change.IsSuccess) isRollback = true; isSuccess = await _boxRepositories.EditEntityList(boxList, false); if (!isSuccess) isRollback = true; - //提交事务 if (isTransaction) { diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 4862c9b8..a744af2d 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -1,14 +1,119 @@ -using System; +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.Login; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Entitys; +using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Values; +using WMS.Web.Domain.Values.Single; namespace WMS.Web.Domain.Services { /// /// 序列号服务 /// - public class SerialNumberService: ISerialNumberService + public class SerialNumberService : ISerialNumberService { + private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; + private readonly ISerialNumbersRepositories _serialNumbersRepositories; + public readonly IBasicsRepositories _transactionRepositories; + public readonly IBoxRepositories _boxRepositories; + private readonly ISingleDataService _singleDataService; + public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories, + ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories, + IBoxRepositories boxRepositories, ISingleDataService singleDataService) + { + _serialNumberOperateRepositories = serialNumberOperateRepositories; + _serialNumbersRepositories = serialNumbersRepositories; + _transactionRepositories = transactionRepositories; + _boxRepositories = boxRepositories; + _singleDataService = singleDataService; + } + /// + /// 改箱 + /// + /// + /// + /// + public async Task ChangeBox(List changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true) + { + //获取序列号信息 + var serialNumbers = changeBoxRecords.SelectMany(s => s.SerialNumbers).ToList(); + var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers); + var boxIds = changeBoxRecords.Select(s => s.DestBoxId).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 destBoxId = changeBoxRecords.FirstOrDefault(f => f.SerialNumbers.Contains(entity.SerialNumber)).DestBoxId; + //修改序列号和箱绑定关系 + entity.Operate(destBoxId); + + var box = boxList.FirstOrDefault(f=>f.Id==destBoxId); + //记录序列号操作日志 + SerialNumberOperate op = new SerialNumberOperate() + { + MaterialId = entity.MaterialId, + SerialNumber = entity.SerialNumber, + OrgId = box.OrgId, + SupplierId = box.SupplierId, + OperateTime = DateTime.Now, + OperateType = SerialNumberOperateType.ChangeBox, + OperateUser = userName, + Remark = "箱号:" + box.BoxBillNo + }; + 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(); + } + /// + /// 操作序列号(出库操作) + /// + /// + /// + public Task OutStock(List serialNumbers, bool isTransaction = true) + { + throw new NotImplementedException(); + } + + /// + /// 序列号操作记录日志 + /// + /// + /// + /// + public async Task SerialNumberOperate(List list, bool isTransaction = true) + { + var isSuccess = await _serialNumberOperateRepositories.AddRange(list, isTransaction); + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index c592c179..8772d5a4 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -158,5 +158,19 @@ namespace WMS.Web.Repositories return false; } } + /// + /// 获取箱集合 + /// + /// + /// + public async Task> GetEntityList(List ids) + { + var res = await _context.Box + .Include(s => s.Details) + .Where(f => ids.Contains(f.Id)) + .ToListAsync(); + + return res.Clone(); + } } }