diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 5ffa6f86..0bd1c113 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -5986,7 +5986,12 @@ - 箱Id + 箱Id(如果是新箱子 箱id为0) + + + + + 箱号 diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index e1ff7aa3..cee95ee5 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -26,7 +26,7 @@ namespace WMS.Web.Domain.Entitys /// /// 对应老OPS的箱ID /// - public int OpsBoxId { get; set; } + public int OpsBoxId { get; set; } = 0; /// /// 箱编号(老OPS生成的箱号) /// diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs index f654243f..bc88b741 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -12,6 +12,8 @@ namespace WMS.Web.Domain.Infrastructure /// public interface IBoxRepositories { + //添加箱 + Task Add(Box entity, bool isTransaction = true); Task Get(int id); Task GetByNo(string billNo); //根据箱号搜索 用来比对确定是否箱号信息是否存在 diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 00aee7e0..b11595eb 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -78,8 +78,9 @@ namespace WMS.Web.Domain.Services //V01.05.00如果扫的内容不是CTN开头则提示"请扫描箱码作为箱号" if (string.IsNullOrEmpty(d.DestBoxBillNo) || d.DestBoxBillNo.Length <= 3) return Result.ReFailure(ResultCodes.BoxBillNoError); - if (d.DestBoxBillNo.Substring(0, 3) != "CTN") - return Result.ReFailure(ResultCodes.BoxBillNoError); + //v1.0.6取消限制 + //if (d.DestBoxBillNo.Substring(0, 3) != "CTN") + // return Result.ReFailure(ResultCodes.BoxBillNoError); var res = await CreateBox(d); if (!res.IsSuccess) return res; diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 8f53b77a..bd72428a 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -43,13 +43,14 @@ namespace WMS.Web.Domain.Services private readonly ISerialNumberService _serialNumberService; private readonly IServiceScopeFactory _serviceScopeFactory; private readonly ISerialNumbersRepositories _serialNumberRepositories; + private readonly IBoxRepositories _boxRepositories; public TakeStockService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories, ISingleDataService singleDataService, IErpService erpService, ILogger logger, IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService, ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory, - ISerialNumbersRepositories serialNumberRepositories) + ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories) { _mapper = mapper; _loginService = loginService; @@ -64,6 +65,7 @@ namespace WMS.Web.Domain.Services _serialNumberService = serialNumberService; _serviceScopeFactory = serviceScopeFactory; _serialNumberRepositories = serialNumberRepositories; + _boxRepositories = boxRepositories; } /// /// 保存 @@ -78,6 +80,25 @@ namespace WMS.Web.Domain.Services if (dto.Count() == 0) return Result.ReSuccess(); if (dto.GroupBy(g => g.BoxId).Count() > 1) return Result.ReFailure(ResultCodes.TakeStockBoxError); + //v1.0.6 如果箱子不存在则添加箱信息 + var dto_f = dto.First(); + if (dto_f.BoxId == 0) + { + var dBox = await _boxRepositories.GetByNo(dto_f.BoxBillNo); + if (dBox != null) return Result.ReFailure(ResultCodes.TakeStockBoxIdError); + dBox = new Box() + { + BoxBillNo = dto_f.BoxBillNo, + CompleteCartonTime = DateTime.Now, + CreateUser = loginInfo.UserInfo.Nickname, + CompleteCartonUser = loginInfo.UserInfo.Nickname, + CreateTime = DateTime.Now + }; + dBox = await _boxRepositories.Add(dBox); + if(dBox==null)return Result.ReFailure(ResultCodes.DateWriteError); + dto.ForEach(f => f.BoxId = dBox.Id); + } + var serialNumbersBoxInventoryList = await GetSerialNumbersBoxInventory(dto); List list = new List(); diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index b46fe6a0..90072abe 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -92,6 +92,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple TakeStockErpSubStockError = (610005, "HD或GD仓时子仓库必填"); public static ValueTuple TakeStockBoxError = (610004, "一次只能盘一个箱"); public static ValueTuple SerialNumbersIsShelf = (610006, "序列号已上架入库"); + public static ValueTuple TakeStockBoxIdError = (610007, "箱信息错误"); public static ValueTuple SubscribeNotificationNoData = (700001, "订阅通知信息不存在"); } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 2d81a8d4..02c5aab0 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -44,6 +44,36 @@ namespace WMS.Web.Repositories _erpBasicDataExtendService = erpBasicDataExtendService; _erpService = erpServic; } + + /// + /// 新增 + /// + /// + /// + /// + public async Task Add(Box entity, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + await _context.Box.AddAsync(entity); + await _context.SaveChangesAsync(); + + if (_transaction != null) + _transaction.Commit(); + return entity; + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return null; + } + + } + public async Task Get(int id) { var entity = await _context.Box.Include(x => x.Details)