盘点增加修改序列号
This commit is contained in:
@@ -2746,6 +2746,9 @@
|
||||
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.BackRecord(WMS.Web.Domain.Entitys.BackRecord,WMS.Web.Core.Dto.Login.LoginInDto,System.Boolean)">
|
||||
出入库回退
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.TakeStock(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},WMS.Web.Core.Dto.Login.LoginInDto,System.Boolean)">
|
||||
盘点
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
|
||||
<summary>
|
||||
序列号操作记录
|
||||
@@ -4911,6 +4914,15 @@
|
||||
<param name="isTransaction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.SerialNumberService.TakeStock(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},WMS.Web.Core.Dto.Login.LoginInDto,System.Boolean)">
|
||||
<summary>
|
||||
盘点
|
||||
</summary>
|
||||
<param name="takeStocks"></param>
|
||||
<param name="loginInfo"></param>
|
||||
<param name="isTransaction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.TakeStockService">
|
||||
<summary>
|
||||
盘点单服务
|
||||
|
||||
@@ -95,5 +95,20 @@ namespace WMS.Web.Domain.Entitys
|
||||
}
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
|
||||
//移入
|
||||
public Result TakeStock(int materialId, decimal qty)
|
||||
{
|
||||
var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
|
||||
if(d==null)
|
||||
{
|
||||
this.Details.Add(new BoxDetails()
|
||||
{
|
||||
MaterialId = materialId,
|
||||
Qty= qty
|
||||
});
|
||||
}
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace WMS.Web.Domain.IService
|
||||
Task<Result> InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true);
|
||||
/// 出入库回退
|
||||
Task<Result> BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true);
|
||||
|
||||
/// 盘点
|
||||
Task<Result> TakeStock(List<TakeStock> takeStocks, LoginInDto loginInfo, bool isTransaction = true);
|
||||
/// <summary>
|
||||
/// 序列号操作记录
|
||||
/// </summary>
|
||||
|
||||
@@ -431,5 +431,88 @@ namespace WMS.Web.Domain.Services
|
||||
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
/// <summary>
|
||||
/// 盘点
|
||||
/// </summary>
|
||||
/// <param name="takeStocks"></param>
|
||||
/// <param name="loginInfo"></param>
|
||||
/// <param name="isTransaction"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> TakeStock(List<TakeStock> takeStocks, LoginInDto loginInfo, bool isTransaction = true)
|
||||
{
|
||||
var serialNumbers = takeStocks.SelectMany(s => s.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);
|
||||
|
||||
List<Box> box_New_List = new List<Box>();
|
||||
List<SerialNumberOperate> soList = new List<SerialNumberOperate>();
|
||||
List<SerialNumbers> sList = new List<SerialNumbers>();
|
||||
foreach (var s in serialNumbers)
|
||||
{
|
||||
var takeStockDetail = takeStocks.SelectMany(s => s.Details).FirstOrDefault(w => w.SerialNumbers.Contains(s));
|
||||
if (takeStockDetail == null) continue;
|
||||
var box = boxList.FirstOrDefault(f => f.Id == takeStockDetail.BoxId);
|
||||
var s_entity = entityList.FirstOrDefault(f => f.SerialNumber.Equals(s));
|
||||
if (box != null && box.Details.FirstOrDefault(f => f.MaterialId == takeStockDetail.MaterialId) == null)
|
||||
{
|
||||
//如果这个物料不存在箱箱信息 添加进去
|
||||
box.TakeStock(takeStockDetail.MaterialId, takeStockDetail.AfterQty);
|
||||
box_New_List.Add(box);
|
||||
}
|
||||
|
||||
if (s_entity == null)
|
||||
{
|
||||
//序列号
|
||||
SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialId, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
|
||||
sList.Add(s_new);
|
||||
}
|
||||
else
|
||||
{
|
||||
s_entity.BoxId = takeStockDetail.BoxId;
|
||||
|
||||
var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null);
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = takeStockDetail.MaterialId,
|
||||
SerialNumber = s,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
OperateTime = DateTime.Now,
|
||||
OperateType = SerialNumberOperateType.TakeStock,
|
||||
OperateUser = "",
|
||||
Remark = "单号:" + takeStock.BillNo + "\r\n" + "箱号:" + box.BoxBillNo
|
||||
};
|
||||
soList.Add(op);
|
||||
}
|
||||
}
|
||||
|
||||
IDbContextTransaction _transaction = null;
|
||||
if (isTransaction)
|
||||
_transaction = _transactionRepositories.GetTransaction();
|
||||
bool isRollback = false;
|
||||
bool isSuccess = true;
|
||||
isSuccess = await _serialNumbersRepositories.EditEntityList(entityList, false);
|
||||
if (isSuccess)
|
||||
isSuccess = await _serialNumbersRepositories.AddRange(sList, false);
|
||||
if (isSuccess)
|
||||
isSuccess = await _boxRepositories.EditEntityList(box_New_List,false);
|
||||
|
||||
//序列号操作记录
|
||||
var res = await this.SerialNumberOperate(soList, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,11 +39,13 @@ namespace WMS.Web.Domain.Services
|
||||
private readonly ILogger<TakeStockService> _logger;
|
||||
private readonly IBoxInventoryService _boxInventoryService;
|
||||
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
|
||||
private readonly ISerialNumberService _serialNumberService;
|
||||
public TakeStockService(IMapper mapper, ILoginService loginService,
|
||||
IBasicsRepositories transactionRepositories,
|
||||
ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories,
|
||||
ISingleDataService singleDataService, IErpService erpService, ILogger<TakeStockService> logger,
|
||||
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService)
|
||||
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
|
||||
ISerialNumberService serialNumberService)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_loginService = loginService;
|
||||
@@ -55,6 +57,7 @@ namespace WMS.Web.Domain.Services
|
||||
_logger = logger;
|
||||
_boxInventoryService = boxInventoryService;
|
||||
_erpBasicDataExtendService = erpBasicDataExtendService;
|
||||
_serialNumberService = serialNumberService;
|
||||
}
|
||||
/// <summary>
|
||||
/// 保存
|
||||
@@ -114,6 +117,11 @@ namespace WMS.Web.Domain.Services
|
||||
if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
|
||||
}
|
||||
if (res_Rollback.IsSuccess)
|
||||
{
|
||||
var res_change = await _serialNumberService.TakeStock(list, loginInfo, false);
|
||||
if (!res_change.IsSuccess) res_Rollback = res_change;
|
||||
}
|
||||
if (res_Rollback.IsSuccess)
|
||||
{
|
||||
var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, false);
|
||||
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
|
||||
|
||||
@@ -93,6 +93,11 @@ namespace WMS.Web.Domain.Values
|
||||
/// </summary>
|
||||
[EnumRemark("出库回退上架")]
|
||||
BackRecord_On = 16,
|
||||
/// <summary>
|
||||
/// 盘点
|
||||
/// </summary>
|
||||
[EnumRemark("盘点")]
|
||||
TakeStock = 17,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user