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)