盘点增加修改序列号

This commit is contained in:
18942506660
2023-12-18 10:53:36 +08:00
parent 9afc872c34
commit d4c9bedd24
6 changed files with 127 additions and 3 deletions

View File

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