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();
+ }
}
}