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); return Result<MaterialResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber); var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber);
if (res == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
return Result<MaterialResponse>.ReSuccess(res); return Result<MaterialResponse>.ReSuccess(res);
} }

View File

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

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

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

View File

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