出库操作调整序列号

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> <param name="isTransaction"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:WMS.Web.Domain.Services.SerialNumberService.SerialNumberOperate(System.Collections.Generic.List{WMS.Web.Domain.Entitys.SerialNumberOperate},System.Boolean)">
<summary> <summary>
序列号操作记录日志 序列号操作记录日志
@@ -3941,6 +3948,31 @@
改箱 改箱
</summary> </summary>
</member> </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"> <member name="T:WMS.Web.Domain.Values.ShelfMethod">
<summary> <summary>
非采购上架方式 非采购上架方式

View File

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

View File

@@ -25,15 +25,17 @@ namespace WMS.Web.Domain.Services
public readonly IBasicsRepositories _transactionRepositories; public readonly IBasicsRepositories _transactionRepositories;
public readonly IBoxRepositories _boxRepositories; public readonly IBoxRepositories _boxRepositories;
private readonly ISingleDataService _singleDataService; private readonly ISingleDataService _singleDataService;
private readonly IErpService _erpService;
public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories, public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories,
ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories, ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories,
IBoxRepositories boxRepositories, ISingleDataService singleDataService) IBoxRepositories boxRepositories, ISingleDataService singleDataService, IErpService erpService)
{ {
_serialNumberOperateRepositories = serialNumberOperateRepositories; _serialNumberOperateRepositories = serialNumberOperateRepositories;
_serialNumbersRepositories = serialNumbersRepositories; _serialNumbersRepositories = serialNumbersRepositories;
_transactionRepositories = transactionRepositories; _transactionRepositories = transactionRepositories;
_boxRepositories = boxRepositories; _boxRepositories = boxRepositories;
_singleDataService = singleDataService; _singleDataService = singleDataService;
_erpService = erpService;
} }
/// <summary> /// <summary>
/// 改箱 /// 改箱
@@ -77,8 +79,8 @@ namespace WMS.Web.Domain.Services
//取目标箱子仓位 记录目标箱仓位号 //取目标箱子仓位 记录目标箱仓位号
//if (moveBoxRecord.Type == MoveBoxType.Up) //if (moveBoxRecord.Type == MoveBoxType.Up)
//{ //{
//var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId); //var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, moveBoxRecord.DestSubStockId);
//op.Remark += "\r\n" + "仓位:" + srcSubStock; //op.Remark += "\r\n" + "仓位:" + srcSubStock;
//} //}
sList.Add(op); sList.Add(op);
} }
@@ -167,10 +169,90 @@ namespace WMS.Web.Domain.Services
/// <param name="loginInfo"></param> /// <param name="loginInfo"></param>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <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>
/// 序列号操作记录日志 /// 序列号操作记录日志
/// </summary> /// </summary>

View File

@@ -33,5 +33,30 @@ namespace WMS.Web.Domain.Values
/// </summary> /// </summary>
[EnumRemark("改箱")] [EnumRemark("改箱")]
ChangeBox = 4, 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,
} }
} }