This commit is contained in:
tongfei
2023-11-13 14:08:20 +08:00
7 changed files with 154 additions and 8 deletions

View File

@@ -272,6 +272,7 @@ namespace WMS.Web.Api.Controllers
return Result<MaterialResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber);
if (res == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
return Result<MaterialResponse>.ReSuccess(res);
}

View File

@@ -3563,6 +3563,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>
序列号操作记录日志
@@ -3966,6 +3973,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

@@ -29,6 +29,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> BoxNoData = (80000, "箱信息不存在");
public static ValueTuple<int, string> BoxMateriaNoData = (800010, "箱对应物料信息不存在");
public static ValueTuple<int, string> MateriaNoData = (800011, "物料信息不存在");
public static ValueTuple<int, string> ErpStockNoData = (900000, "Erp仓库信息不完整");
public static ValueTuple<int, string> Box_NoBind_Task_Data = (80001, "该箱号不在收货信息中,请核对再试!");

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,
}
}

View File

@@ -138,12 +138,13 @@ namespace WMS.Web.Repositories
return response;
}
var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber));
if (entity == null) return null;
response.SerialNumber = entity.SerialNumber;
response.MaterialId = entity.MaterialId;
response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId);
response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId);
response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialId);
return new MaterialResponse();
return response;
}
}
}