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;