出库操作调整序列号

This commit is contained in:
18942506660
2023-11-13 11:33:04 +08:00
parent 706550e224
commit dcfc5c5d63
4 changed files with 149 additions and 6 deletions

View File

@@ -25,15 +25,17 @@ namespace WMS.Web.Domain.Services
public readonly IBasicsRepositories _transactionRepositories;
public readonly IBoxRepositories _boxRepositories;
private readonly ISingleDataService _singleDataService;
private readonly IErpService _erpService;
public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories,
ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories,
IBoxRepositories boxRepositories, ISingleDataService singleDataService)
IBoxRepositories boxRepositories, ISingleDataService singleDataService, IErpService erpService)
{
_serialNumberOperateRepositories = serialNumberOperateRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
_transactionRepositories = transactionRepositories;
_boxRepositories = boxRepositories;
_singleDataService = singleDataService;
_erpService = erpService;
}
/// <summary>
/// 改箱
@@ -77,8 +79,8 @@ namespace WMS.Web.Domain.Services
//取目标箱子仓位 记录目标箱仓位号
//if (moveBoxRecord.Type == MoveBoxType.Up)
//{
//var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId);
//op.Remark += "\r\n" + "仓位:" + srcSubStock;
//var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId);
//op.Remark += "\r\n" + "仓位:" + srcSubStock;
//}
sList.Add(op);
}
@@ -167,10 +169,90 @@ namespace WMS.Web.Domain.Services
/// <param name="loginInfo"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public Task<Result> OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true)
public async Task<Result> OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true)
{
throw new NotImplementedException();
//获取序列号信息
var serialNumbers = outStock.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);
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<SerialNumberOperate> sList = new List<SerialNumberOperate>();
foreach (var entity in entityList)
{
var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId);
//修改序列号和箱绑定关系
entity.OutStock(outStock.BillNo);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
OperateTime = DateTime.Now,
OperateType = OutStockTypeConvert(outStock.Type),
OperateUser = userName,
Remark = "来源单号:" + outStock.SourceBillNo + "\r\n" + "出库单号:" + outStock.BillNo
};
if (outStock.Type == OutStockType.Sal)
{
var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
var res_c = await _erpService.BillQueryForCustomer();
var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId);
op.Remark += "\r\n" + "销售订单号:" + detail.SaleBillNo;
op.Remark += "\r\n" + "客户:" + customer?.Name;
}
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();
}
/// <summary>
/// 出库单类型转化序列号记录类型
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
private SerialNumberOperateType OutStockTypeConvert(OutStockType type)
{
switch (type)
{
case OutStockType.Sal:
return SerialNumberOperateType.Sal_Out;
case OutStockType.Assembled:
return SerialNumberOperateType.Assembled_Out;
case OutStockType.Miscellaneous:
return SerialNumberOperateType.Miscellaneous_Out;
case OutStockType.Stkdirecttransfers:
return SerialNumberOperateType.Stkdirecttransfers_Out;
case OutStockType.StktransferInst:
return SerialNumberOperateType.StktransferInst_Out;
default:
return SerialNumberOperateType.StktransferInst_Out;
}
}
/// <summary>
/// 序列号操作记录日志
/// </summary>