From dcfc5c5d63f9d4868c759b0bf7ac70549e2304ae Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 13 Nov 2023 11:33:04 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=8F=E5=88=97=E5=8F=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 32 +++++++
.../Services/OutStockService.cs | 6 +-
.../Services/SerialNumberService.cs | 92 ++++++++++++++++++-
.../Values/SerialNumberOperateType.cs | 25 +++++
4 files changed, 149 insertions(+), 6 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index dff909c0..96fc08e0 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -3538,6 +3538,13 @@
+
+
+ 出库单类型转化序列号记录类型
+
+
+
+
序列号操作记录日志
@@ -3941,6 +3948,31 @@
改箱
+
+
+ 销售出库
+
+
+
+
+ 其他出库
+
+
+
+
+ 直接调拨出库
+
+
+
+
+ 分步式出库
+
+
+
+
+ 组装拆卸出库
+
+
非采购上架方式
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index 9b6b22ce..0775bc3e 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -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;
}
///
/// 出库单
@@ -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)
diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs
index 3d65c963..ae3548a0 100644
--- a/src/WMS.Web.Domain/Services/SerialNumberService.cs
+++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs
@@ -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;
}
///
/// 改箱
@@ -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
///
///
///
- public Task OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true)
+ public async Task 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 sList = new List();
+ 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();
}
+ ///
+ /// 出库单类型转化序列号记录类型
+ ///
+ ///
+ ///
+ 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;
+ }
+ }
+
///
/// 序列号操作记录日志
///
diff --git a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
index 5198ad40..83e30ac1 100644
--- a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
+++ b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
@@ -33,5 +33,30 @@ namespace WMS.Web.Domain.Values
///
[EnumRemark("改箱")]
ChangeBox = 4,
+ ///
+ /// 销售出库
+ ///
+ [EnumRemark("销售出库")]
+ Sal_Out = 5,
+ ///
+ /// 其他出库
+ ///
+ [EnumRemark("其他出库")]
+ Miscellaneous_Out = 6,
+ ///
+ /// 直接调拨出库
+ ///
+ [EnumRemark("直接调拨出库")]
+ Stkdirecttransfers_Out = 7,
+ ///
+ /// 分步式出库
+ ///
+ [EnumRemark("分步式出库")]
+ StktransferInst_Out = 8,
+ ///
+ /// 组装拆卸出库
+ ///
+ [EnumRemark("组装拆卸出库")]
+ Assembled_Out = 9,
}
}
From a28c7920730928da7e42b39b1ad0690721f2353e Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 13 Nov 2023 11:49:48 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Repositories/SerialNumbersRepositories.cs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
index 39263271..6fe0c34f 100644
--- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
+++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
@@ -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 new MaterialResponse();
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;
}
}
}
From 4e2dc4908c70a1cf71c59d95e0ec7d462ac6a785 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 13 Nov 2023 11:59:03 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/Controllers/SysConfigController.cs | 3 ++-
src/WMS.Web.Domain/Values/ResultCodes.cs | 1 +
src/WMS.Web.Repositories/SerialNumbersRepositories.cs | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs
index 74db4063..e5cfab25 100644
--- a/src/WMS.Web.Api/Controllers/SysConfigController.cs
+++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs
@@ -272,7 +272,8 @@ namespace WMS.Web.Api.Controllers
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber);
-
+ if (res == null) return Result.ReFailure(ResultCodes.MateriaNoData);
+
return Result.ReSuccess(res);
}
}
diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs
index 685200e0..04f86b86 100644
--- a/src/WMS.Web.Domain/Values/ResultCodes.cs
+++ b/src/WMS.Web.Domain/Values/ResultCodes.cs
@@ -29,6 +29,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple BoxNoData = (80000, "箱信息不存在");
public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在");
+ public static ValueTuple MateriaNoData = (800011, "物料信息不存在");
public static ValueTuple ErpStockNoData = (900000, "Erp仓库信息不完整");
public static ValueTuple Box_NoBind_Task_Data = (80001, "该箱号不在收货信息中,请核对再试!");
diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
index 6fe0c34f..d683b955 100644
--- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
+++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
@@ -138,7 +138,7 @@ namespace WMS.Web.Repositories
return response;
}
var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber));
- if (entity == null) return new MaterialResponse();
+ if (entity == null) return null;
response.SerialNumber = entity.SerialNumber;
response.MaterialId = entity.MaterialId;
response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId);