From 55721d763054a76e37628cc974f1db34cf1fb43f Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 9 Apr 2024 15:01:47 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=8F=E5=88=97=E7=A0=81?=
=?UTF-8?q?=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/SysConfigController.cs | 14 +++++++----
src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 10 ++++++--
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 12 +++++++++-
src/WMS.Web.Domain/Entitys/SerialNumbers.cs | 13 +++++++++--
.../Entitys/SerialNumbers_Ops.cs | 5 ++++
.../ISerialNumbersRepositories.cs | 2 +-
.../Services/SerialNumberService.cs | 7 ++++--
.../SerialNumbersRepositories.cs | 23 +++++++++++++++----
8 files changed, 69 insertions(+), 17 deletions(-)
diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs
index 78d71ba0..bacba7be 100644
--- a/src/WMS.Web.Api/Controllers/SysConfigController.cs
+++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs
@@ -491,18 +491,24 @@ namespace WMS.Web.Api.Controllers
/// 序列号或规格型号或物料编码
/// 组织编码
/// 是否需要支持老ops条码查询
- /// 出库回退上架 true 其他false或不传
+ ///
+ /// 盘点 所有的序列号 0或者不传
+ /// 非采购上架 改箱 (非激活的或者(激活被冻结)) 1
+ /// 出库回退上架 (激活被冻结) 2
+ /// 入库回退下架 (激活非冻结) 3
+ /// 出库 (激活非冻结) 3
+ ///
///
[HttpGet]
[Route("GetMaterial")]
- public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false, [FromQuery] bool IsIncludeDelete = false)
+ public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false, [FromQuery] int? serialStatus = 0)
{
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
- _logger.LogInformation($"请求序列号信息:{serialNumber} 组织:{orgCode} 是否Ops:{IsOps} 是否包含冻结 {IsIncludeDelete}");
- var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, IsIncludeDelete);
+ _logger.LogInformation($"请求序列号信息:{serialNumber} 组织:{orgCode} 是否Ops:{IsOps} 查询状态 {serialStatus}");
+ var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0);
if (res == null) return Result.ReFailure(ResultCodes.MateriaNoData);
_logger.LogInformation($"请求序列号信息结果:{res.MaterialNumber}");
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index 7ce83fac..e959b692 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -670,14 +670,20 @@
必填
-
+
根据序列号或规格型号,物料编码搜索物料信息-PDA
序列号或规格型号或物料编码
组织编码
是否需要支持老ops条码查询
- 出库回退上架 true 其他false或不传
+
+ 盘点 所有的序列号 0或者不传
+ 非采购上架 改箱 (非激活的或者(激活被冻结)) 1
+ 出库回退上架 (激活被冻结) 2
+ 入库回退下架 (激活非冻结) 3
+ 出库 (激活非冻结) 3
+
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 2b893842..519c1ba9 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2142,6 +2142,11 @@
是否删除
+
+
+ 是否激活过(只有做过 盘点 采购和非采购上架 出库回退上架 才算激活)
+
+
操作(绑定箱信息)
@@ -2178,7 +2183,7 @@
-
+
盘点
@@ -2258,6 +2263,11 @@
是否出库
+
+
+ 是否激活过(只有做过 盘点 采购和非采购上架 出库回退上架 才算激活)
+
+
订阅通知信息
diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs
index db93541f..267f966c 100644
--- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs
+++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs
@@ -97,6 +97,11 @@ namespace WMS.Web.Domain.Entitys
///
[Column("IsDelete")]
public bool? IsDelete { get; set; } = false;
+ ///
+ /// 是否激活过(只有做过 盘点 采购和非采购上架 出库回退上架 才算激活)
+ ///
+ [Column("IsActivate")]
+ public bool? IsActivate { get; set; } = false;
///
/// 操作(绑定箱信息)
@@ -140,6 +145,7 @@ namespace WMS.Web.Domain.Entitys
/// 出库单号
public void InStock(string inStockBillNo, InstockType type)
{
+ this.IsActivate = true;
if (type == InstockType.Purchase)
{
this.PurchaseBillNo = inStockBillNo;
@@ -168,6 +174,7 @@ namespace WMS.Web.Domain.Entitys
//盘点, 整箱移货上架, 出库回退上架----序列号正常可用
if (BackRecordType.OutstockOn == type)
{
+ this.IsActivate = true;
this.BoxId = boxId;
this.IsDelete = false;
}
@@ -177,12 +184,14 @@ namespace WMS.Web.Domain.Entitys
///
/// 盘点
///
- public void TakeStock(int boxId)
+ public void TakeStock(int boxId, TakeStockType type)
{
//拣货出库, 整箱移货下架, 入库回退下架---- 序列号状态失效
//盘点, 整箱移货上架, 出库回退上架----序列号正常可用
this.BoxId = boxId;
- this.IsDelete = false;
+ //盘亏被冻结 盘盈反冻结
+ this.IsDelete = type == TakeStockType.Profit ? true : false;
+ this.IsActivate = true;
}
}
diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs
index 6f9ed9b5..f472cb9f 100644
--- a/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs
+++ b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs
@@ -86,5 +86,10 @@ namespace WMS.Web.Domain.Entitys
///
[Column("IsDelete")]
public bool? IsDelete { get; set; } = false;
+ ///
+ /// 是否激活过(只有做过 盘点 采购和非采购上架 出库回退上架 才算激活)
+ ///
+ [Column("IsActivate")]
+ public bool? IsActivate { get; set; } = false;
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs
index 8ccbbf66..e6de0271 100644
--- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs
@@ -21,7 +21,7 @@ namespace WMS.Web.Domain.Infrastructure
///
Task AddRange(List entitys, bool isTransaction = true);
//根据序列号模糊搜索信息
- Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, bool IsIncludeDelete = false);
+ Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
//根据序列号搜索信息
Task Get(string serialNumber);
/// 查询实体集合
diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs
index 70218b5b..fbe518b0 100644
--- a/src/WMS.Web.Domain/Services/SerialNumberService.cs
+++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs
@@ -461,7 +461,9 @@ namespace WMS.Web.Domain.Services
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.MaterialNumber == takeStockDetail.MaterialNumber) == null)
@@ -479,10 +481,11 @@ namespace WMS.Web.Domain.Services
}
else
{
- s_entity.TakeStock(takeStockDetail.BoxId);
+ var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null);
+ s_entity.TakeStock(takeStockDetail.BoxId, takeStock.ResultType);
if (s_entity.BoxId == takeStockDetail.BoxId) continue;
- var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null);
+
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
index c27faa74..2ab150d5 100644
--- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
+++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs
@@ -224,7 +224,7 @@ namespace WMS.Web.Repositories
///
///
///
- public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, bool IsIncludeDelete = false)
+ public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
{
MaterialResponse response = new MaterialResponse();
var materials_result = await _erpService.BillQueryForMaterial();
@@ -249,12 +249,19 @@ namespace WMS.Web.Repositories
.GroupJoin(_context.Box, s => s.serial.BoxId, box => box.Id, (s, box) => new { s.serial, s.boxInventory, box })
.SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, p.boxInventory, box })
.Where(w => serialNumber.Equals(w.serial.SerialNumber));
- if (IsIncludeDelete == false) res = res.Where(w => w.serial.IsDelete != true);
+ //0:所有 1 非激活的或者(激活被冻结) 2 激活被冻结 3 激活非冻结
+ if (serialStatus == 1)
+ res = res.Where(w => w.serial.IsActivate != true || (w.serial.IsActivate == true && w.serial.IsDelete == true));
+ else if (serialStatus == 2)
+ res = res.Where(w => w.serial.IsActivate == true && w.serial.IsDelete == true);
+ else if (serialStatus == 3)
+ res = res.Where(w => w.serial.IsActivate == true && w.serial.IsDelete != true);
+
var entity = await res.FirstOrDefaultAsync();
if (entity == null || entity.serial == null)
{
if (IsOps)
- return await GetSerialNumber_Ops(serialNumber, IsIncludeDelete);
+ return await GetSerialNumber_Ops(serialNumber, serialStatus);
else
return null;
}
@@ -279,7 +286,7 @@ namespace WMS.Web.Repositories
///
///
///
- private async Task GetSerialNumber_Ops(string serialNumber, bool IsIncludeDelete = false)
+ private async Task GetSerialNumber_Ops(string serialNumber, int serialStatus = 0)
{
MaterialResponse response = new MaterialResponse();
var materials_result = await _erpService.BillQueryForMaterial();
@@ -293,7 +300,13 @@ namespace WMS.Web.Repositories
.GroupJoin(_context.Box, s => s.serial.BoxId, box => box.Id, (s, box) => new { s.serial, s.boxInventory, box })
.SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, p.boxInventory, box })
.Where(w => serialNumber.Equals(w.serial.SerialNumber));
- if (IsIncludeDelete == false) res = res.Where(w => w.serial.IsDelete != true);
+ //0:所有 1 非激活的或者(激活被冻结) 2 激活被冻结 3 激活非冻结
+ if (serialStatus == 1)
+ res = res.Where(w => w.serial.IsActivate != true || (w.serial.IsActivate == true && w.serial.IsDelete == true));
+ else if (serialStatus == 2)
+ res = res.Where(w => w.serial.IsActivate == true && w.serial.IsDelete == true);
+ else if (serialStatus == 3)
+ res = res.Where(w => w.serial.IsActivate == true && w.serial.IsDelete != true);
var entity = await res.FirstOrDefaultAsync();
if (entity == null) return null;
response.IsOldOps = true;