From d4c9bedd24ed27047770adfaf01bab5acec3018a Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 10:53:36 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E7=9B=98=E7=82=B9=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=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 | 12 +++
src/WMS.Web.Domain/Entitys/Box.cs | 15 ++++
.../IService/ISerialNumberService.cs | 3 +-
.../Services/SerialNumberService.cs | 83 +++++++++++++++++++
.../Services/TakeStockService.cs | 10 ++-
.../Values/SerialNumberOperateType.cs | 7 +-
6 files changed, 127 insertions(+), 3 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index b9a13442..1696ac01 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2746,6 +2746,9 @@
出入库回退
+
+ 盘点
+
序列号操作记录
@@ -4911,6 +4914,15 @@
+
+
+ 盘点
+
+
+
+
+
+
盘点单服务
diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs
index ea0c380b..542f8b47 100644
--- a/src/WMS.Web.Domain/Entitys/Box.cs
+++ b/src/WMS.Web.Domain/Entitys/Box.cs
@@ -95,5 +95,20 @@ namespace WMS.Web.Domain.Entitys
}
return Result.ReSuccess();
}
+
+ //移入
+ public Result TakeStock(int materialId, decimal qty)
+ {
+ var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
+ if(d==null)
+ {
+ this.Details.Add(new BoxDetails()
+ {
+ MaterialId = materialId,
+ Qty= qty
+ });
+ }
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/IService/ISerialNumberService.cs b/src/WMS.Web.Domain/IService/ISerialNumberService.cs
index fd4f127f..9831d63e 100644
--- a/src/WMS.Web.Domain/IService/ISerialNumberService.cs
+++ b/src/WMS.Web.Domain/IService/ISerialNumberService.cs
@@ -24,7 +24,8 @@ namespace WMS.Web.Domain.IService
Task InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true);
/// 出入库回退
Task BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true);
-
+ /// 盘点
+ Task TakeStock(List takeStocks, LoginInDto loginInfo, bool isTransaction = true);
///
/// 序列号操作记录
///
diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs
index 4da87ee8..5485fc91 100644
--- a/src/WMS.Web.Domain/Services/SerialNumberService.cs
+++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs
@@ -431,5 +431,88 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+ ///
+ /// 盘点
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task TakeStock(List takeStocks, LoginInDto loginInfo, bool isTransaction = true)
+ {
+ var serialNumbers = takeStocks.SelectMany(s => s.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);
+
+ List box_New_List = new List();
+ List soList = new List();
+ List sList = new List();
+ foreach (var s in serialNumbers)
+ {
+ var takeStockDetail = takeStocks.SelectMany(s => s.Details).FirstOrDefault(w => w.SerialNumbers.Contains(s));
+ if (takeStockDetail == null) continue;
+ var box = boxList.FirstOrDefault(f => f.Id == takeStockDetail.BoxId);
+ var s_entity = entityList.FirstOrDefault(f => f.SerialNumber.Equals(s));
+ if (box != null && box.Details.FirstOrDefault(f => f.MaterialId == takeStockDetail.MaterialId) == null)
+ {
+ //如果这个物料不存在箱箱信息 添加进去
+ box.TakeStock(takeStockDetail.MaterialId, takeStockDetail.AfterQty);
+ box_New_List.Add(box);
+ }
+
+ if (s_entity == null)
+ {
+ //序列号
+ SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialId, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
+ sList.Add(s_new);
+ }
+ else
+ {
+ s_entity.BoxId = takeStockDetail.BoxId;
+
+ var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null);
+ //记录序列号操作日志
+ SerialNumberOperate op = new SerialNumberOperate()
+ {
+ MaterialId = takeStockDetail.MaterialId,
+ SerialNumber = s,
+ OrgId = box.OrgId,
+ SupplierId = box.SupplierId,
+ OperateTime = DateTime.Now,
+ OperateType = SerialNumberOperateType.TakeStock,
+ OperateUser = "",
+ Remark = "单号:" + takeStock.BillNo + "\r\n" + "箱号:" + box.BoxBillNo
+ };
+ soList.Add(op);
+ }
+ }
+
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _transactionRepositories.GetTransaction();
+ bool isRollback = false;
+ bool isSuccess = true;
+ isSuccess = await _serialNumbersRepositories.EditEntityList(entityList, false);
+ if (isSuccess)
+ isSuccess = await _serialNumbersRepositories.AddRange(sList, false);
+ if (isSuccess)
+ isSuccess = await _boxRepositories.EditEntityList(box_New_List,false);
+
+ //序列号操作记录
+ var res = await this.SerialNumberOperate(soList, 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();
+ }
}
}
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
index 99ef45d1..577c298d 100644
--- a/src/WMS.Web.Domain/Services/TakeStockService.cs
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -39,11 +39,13 @@ namespace WMS.Web.Domain.Services
private readonly ILogger _logger;
private readonly IBoxInventoryService _boxInventoryService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
+ private readonly ISerialNumberService _serialNumberService;
public TakeStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories,
ISingleDataService singleDataService, IErpService erpService, ILogger logger,
- IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService)
+ IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
+ ISerialNumberService serialNumberService)
{
_mapper = mapper;
_loginService = loginService;
@@ -55,6 +57,7 @@ namespace WMS.Web.Domain.Services
_logger = logger;
_boxInventoryService = boxInventoryService;
_erpBasicDataExtendService = erpBasicDataExtendService;
+ _serialNumberService = serialNumberService;
}
///
/// 保存
@@ -114,6 +117,11 @@ namespace WMS.Web.Domain.Services
if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
}
if (res_Rollback.IsSuccess)
+ {
+ var res_change = await _serialNumberService.TakeStock(list, loginInfo, false);
+ if (!res_change.IsSuccess) res_Rollback = res_change;
+ }
+ if (res_Rollback.IsSuccess)
{
var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, false);
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
diff --git a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
index 34d8f68d..a46aeb18 100644
--- a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
+++ b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs
@@ -93,6 +93,11 @@ namespace WMS.Web.Domain.Values
///
[EnumRemark("出库回退上架")]
BackRecord_On = 16,
-
+ ///
+ /// 盘点
+ ///
+ [EnumRemark("盘点")]
+ TakeStock = 17,
+
}
}
From 347d12736ed282c22f339c82975b6bc1f7853394 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 11:43:06 +0800
Subject: [PATCH 2/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=B1=E5=B7=AE?=
=?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/SysConfigController.cs | 24 ++++++++++++++-
.../Infrastructure/IOutStockRepositories.cs | 3 ++
.../OutStockRepositories.cs | 30 +++++++++++++++++++
3 files changed, 56 insertions(+), 1 deletion(-)
diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs
index e03f3ae8..d5f9ccc6 100644
--- a/src/WMS.Web.Api/Controllers/SysConfigController.cs
+++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs
@@ -37,10 +37,11 @@ namespace WMS.Web.Api.Controllers
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly IMapper _mapper;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
+ private readonly IOutStockRepositories _outStockRepositories;
public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories,
IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService,
ISerialNumbersRepositories serialNumbersRepositories, IBoxInventoryRepositories boxInventoryRepositories,
- IMapper mapper, IErpBasicDataExtendService erpBasicDataExtendService)
+ IMapper mapper, IErpBasicDataExtendService erpBasicDataExtendService, IOutStockRepositories outStockRepositories)
{
_loginService = loginService;
_basicsRepositories = basicsRepositories;
@@ -51,6 +52,7 @@ namespace WMS.Web.Api.Controllers
_boxInventoryRepositories = boxInventoryRepositories;
_mapper = mapper;
_erpBasicDataExtendService = erpBasicDataExtendService;
+ _outStockRepositories = outStockRepositories;
}
///
@@ -357,6 +359,26 @@ namespace WMS.Web.Api.Controllers
return Result.ReSuccess(res.First());
}
+
+ ///
+ /// 根据箱号获取箱对应出库单信息 最新一条
+ ///
+ /// 必填
+ ///
+ [HttpGet]
+ [Route("GetBox_OutStock")]
+ public async Task> GetBox_OutStock([FromQuery] string boxBillNo)
+ {
+ var res = await _boxRepositories.GetBox(new List() { boxBillNo });
+ if (res.Count() <= 0)
+ return Result.ReFailure("箱号" + boxBillNo + "不存在", 800000);
+ var response = res[0];
+ var detail = await _outStockRepositories.GetDetailsByBoxId(response.Id);
+ response.Details = detail;
+ response.TotalQty = detail.Sum(s => s.Qty);
+ return Result.ReSuccess(response);
+ }
+
///
/// 根据序列号或规格型号,物料编码搜索物料信息-PDA
///
diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
index 3d42c2f2..9b917767 100644
--- a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
+using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.OutStock;
using WMS.Web.Domain.Entitys;
@@ -23,5 +24,7 @@ namespace WMS.Web.Domain.Infrastructure
Task EditEntityList(List entitys, bool isTransaction = true);
//获取详情
Task GetInfo(int id);
+ //获取出库单明细
+ Task> GetDetailsByBoxId(int boxId);
}
}
diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs
index ca96dc0e..18d0e857 100644
--- a/src/WMS.Web.Repositories/OutStockRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockRepositories.cs
@@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core;
+using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.OutStock;
using WMS.Web.Core.Help;
@@ -320,5 +321,34 @@ namespace WMS.Web.Repositories
{
return await GetListAsync(dto);
}
+
+ public async Task> GetDetailsByBoxId(int boxId)
+ {
+ var res = await _context.OutStock
+ .Include(s => s.Details).ThenInclude(s => s.ErpDetails)
+ .Include(s => s.Details).ThenInclude(s => s.BoxsDetails.Where(w => w.BoxId == boxId))
+ .Where(f => f.Details.SelectMany(s => s.BoxsDetails).Where(w => w.BoxId == boxId).Any())
+ .OrderByDescending(o => o.Id)
+ .FirstAsync();
+ List details = new List();
+
+ var materials_result = await _erpService.BillQueryForMaterial();
+ if (!materials_result.IsSuccess)
+ return new List();
+ var materials = materials_result.Data.ToList();
+
+ foreach (var d in res.Details)
+ {
+ BoxDetailResponse detail = new BoxDetailResponse();
+ detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, detail.MaterialId);
+ detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, detail.MaterialId);
+ detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialId);
+ detail.SerialNumbers = d.SerialNumbers;
+ detail.MaterialId = d.MaterialId;
+ detail.Qty = d.BoxsDetails.FirstOrDefault(f => f.BoxId == boxId)?.Qty ?? 0;
+ details.Add(detail);
+ }
+ return details;
+ }
}
}
From a32f9e50f8f2507a4b705a5ae40fda49d2c088f1 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 11:44:49 +0800
Subject: [PATCH 3/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=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/wwwroot/WMS.Web.Api.xml | 7 +++++++
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 5 +++++
2 files changed, 12 insertions(+)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index 96a36ff3..c4befb68 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -517,6 +517,13 @@
必填
+
+
+ 根据箱号获取箱对应出库单信息 最新一条
+
+ 必填
+
+
根据序列号或规格型号,物料编码搜索物料信息-PDA
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 1696ac01..d4db2e29 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -5503,6 +5503,11 @@
出库回退上架
+
+
+ 盘点
+
+
非采购上架方式
From d2adf51555cb8c7c51136493cd9fc3abef2af0e6 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 11:56:30 +0800
Subject: [PATCH 4/6] =?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/OutStockRepositories.cs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs
index 18d0e857..bafd2ad8 100644
--- a/src/WMS.Web.Repositories/OutStockRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockRepositories.cs
@@ -339,13 +339,15 @@ namespace WMS.Web.Repositories
foreach (var d in res.Details)
{
+ var boxDetail = d.BoxsDetails.FirstOrDefault(f => f.BoxId == boxId);
+ if (boxDetail == null) continue;
BoxDetailResponse detail = new BoxDetailResponse();
detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, detail.MaterialId);
detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, detail.MaterialId);
detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialId);
detail.SerialNumbers = d.SerialNumbers;
detail.MaterialId = d.MaterialId;
- detail.Qty = d.BoxsDetails.FirstOrDefault(f => f.BoxId == boxId)?.Qty ?? 0;
+ detail.Qty = boxDetail.Qty;
details.Add(detail);
}
return details;
From be93afa55984d198147cbcb0525a8527414c7d46 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 13:31:14 +0800
Subject: [PATCH 5/6] =?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.Domain/Services/SerialNumberService.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs
index 5485fc91..a7230e0d 100644
--- a/src/WMS.Web.Domain/Services/SerialNumberService.cs
+++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs
@@ -469,6 +469,7 @@ namespace WMS.Web.Domain.Services
}
else
{
+ if (s_entity.BoxId == takeStockDetail.BoxId) continue;
s_entity.BoxId = takeStockDetail.BoxId;
var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null);
From ef2e5916c1c43212097b00d9d793ad35fb0fe919 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Mon, 18 Dec 2023 13:38:18 +0800
Subject: [PATCH 6/6] =?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/OutStockRepositories.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs
index bafd2ad8..e3885d86 100644
--- a/src/WMS.Web.Repositories/OutStockRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockRepositories.cs
@@ -342,9 +342,9 @@ namespace WMS.Web.Repositories
var boxDetail = d.BoxsDetails.FirstOrDefault(f => f.BoxId == boxId);
if (boxDetail == null) continue;
BoxDetailResponse detail = new BoxDetailResponse();
- detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, detail.MaterialId);
- detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, detail.MaterialId);
- detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialId);
+ detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, d.MaterialId);
+ detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId);
+ detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, d.MaterialId);
detail.SerialNumbers = d.SerialNumbers;
detail.MaterialId = d.MaterialId;
detail.Qty = boxDetail.Qty;