出库操作调整序列号

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

@@ -3538,6 +3538,13 @@
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.OutStockTypeConvert(WMS.Web.Domain.Values.OutStockType)">
<summary>
出库单类型转化序列号记录类型
</summary>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
<summary>
序列号操作记录日志
@@ -3941,6 +3948,31 @@
改箱
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.SerialNumberOperateType.Sal_Out">
<summary>
销售出库
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.SerialNumberOperateType.Miscellaneous_Out">
<summary>
其他出库
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.SerialNumberOperateType.Stkdirecttransfers_Out">
<summary>
直接调拨出库
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.SerialNumberOperateType.StktransferInst_Out">
<summary>
分步式出库
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.SerialNumberOperateType.Assembled_Out">
<summary>
组装拆卸出库
</summary>
</member>
<member name="T:WMS.Web.Domain.Values.ShelfMethod">
<summary>
非采购上架方式

View File

@@ -30,10 +30,11 @@ namespace WMS.Web.Domain.Services
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IOutStockTaskService _outStockTaskService;
private readonly IErpService _erpService;
private readonly ISerialNumberService _serialNumberService;
public OutStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories,
IOutStockTaskService outStockTaskService, IErpService erpService)
IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService)
{
_mapper = mapper;
_loginService = loginService;
@@ -42,6 +43,7 @@ namespace WMS.Web.Domain.Services
_outStockTaskRepositories = outStockTaskRepositories;
_outStockTaskService = outStockTaskService;
_erpService = erpService;
_serialNumberService = serialNumberService;
}
/// <summary>
/// 出库单
@@ -88,6 +90,8 @@ namespace WMS.Web.Domain.Services
if (entity == null) isRollback = true;
outStockTask = await _outStockTaskRepositories.Edit(outStockTask, false);
if (outStockTask == null) isRollback = true;
var res_change = await _serialNumberService.OutStock(entity, loginInfo, false);
if (!res_change.IsSuccess) isRollback = true;
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)

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>
/// 改箱
@@ -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>

View File

@@ -33,5 +33,30 @@ namespace WMS.Web.Domain.Values
/// </summary>
[EnumRemark("改箱")]
ChangeBox = 4,
/// <summary>
/// 销售出库
/// </summary>
[EnumRemark("销售出库")]
Sal_Out = 5,
/// <summary>
/// 其他出库
/// </summary>
[EnumRemark("其他出库")]
Miscellaneous_Out = 6,
/// <summary>
/// 直接调拨出库
/// </summary>
[EnumRemark("直接调拨出库")]
Stkdirecttransfers_Out = 7,
/// <summary>
/// 分步式出库
/// </summary>
[EnumRemark("分步式出库")]
StktransferInst_Out = 8,
/// <summary>
/// 组装拆卸出库
/// </summary>
[EnumRemark("组装拆卸出库")]
Assembled_Out = 9,
}
}