From e0074faba12beb89f902a98cea848be5232a34e9 Mon Sep 17 00:00:00 2001 From: 18923810322 <1666941798@qq.com> Date: Tue, 13 May 2025 16:40:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=9B=9E=E4=BA=86=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E7=A0=81,=E4=B8=8D=E4=BD=BF=E7=94=A8List?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 278871 -> 278871 bytes .../Controllers/SysConfigController.cs | 59 +++++- .../IService/ISerialNumberService.cs | 4 +- .../IService/Public/IOpsService.cs | 3 +- .../ISerialNumbersRepositories.cs | 6 +- .../Services/Public/OpsService.cs | 21 ++- .../Services/SerialNumberService.cs | 160 ++++++++++++++-- .../SerialNumbersRepositories.cs | 171 +++++++++++++++--- 8 files changed, 375 insertions(+), 49 deletions(-) diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 0d637015fbd9c04fceda4bb30490202a17cdce12..06879f9ef8db7d072bda5f6fd6d033979ff57fdf 100644 GIT binary patch delta 19165 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 ZTZ#E@S=?H=sQcl^)Ts+z>e}p@{{@E=_ALMa delta 18811 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 diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 36c17606..2a3aaea1 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -522,11 +522,11 @@ namespace WMS.Web.Api.Controllers /// [HttpGet] [Route("GetMaterial")] - public async Task>> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false, [FromQuery] int? serialStatus = 0) + 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); + return Result.ReFailure(ResultCodes.Token_Invalid_Error); _logger.LogInformation($"请求序列号信息:{serialNumber} 组织:{orgCode} 是否Ops:{IsOps} 查询状态 {serialStatus}"); var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0); @@ -544,14 +544,61 @@ namespace WMS.Web.Api.Controllers */ if (serialStatus == 1 || serialStatus == 2) { - if (res[0].IsActivate == true && res[0].IsDelete != true) - return Result>.ReFailure(ResultCodes.SerialNumbersIsShelf); + if (res.IsActivate == true && res.IsDelete != true) + return Result.ReFailure(ResultCodes.SerialNumbersIsShelf); } - _logger.LogInformation($"请求序列号信息结果:{res[0].MaterialNumber}"); - return Result>.ReSuccess(res); + _logger.LogInformation($"请求序列号信息结果:{res.MaterialNumber}"); + return Result.ReSuccess(res); } + + ///// + ///// 根据序列号或规格型号,物料编码搜索物料信息-PDA + ///// + ///// 序列号或规格型号或物料编码 + ///// 组织编码 + ///// 是否需要支持老ops条码查询 + ///// + ///// 盘点 改箱 所有的序列号 0或者不传 + ///// 非采购上架 (非激活的或者(激活被冻结)) 1 + ///// 出库回退上架 (激活被冻结) 2 + ///// 入库回退下架 (激活非冻结) 3 + ///// 出库 (激活非冻结) 3 + ///// + ///// + //[HttpGet] + //[Route("GetMaterial")] + //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} 查询状态 {serialStatus}"); + // var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0); + // //if (res == null) return Result.ReFailure(ResultCodes.MateriaNoData); + // if (res == null) + // { + // //没有搜索到数据 则去同步供应链系统 + // return await _serialNumberService.GetBarCodeSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0); + // } + // /* + // 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 ; 状态为冻结的扫描成功; + // 不存在的序列号提示:产品信息不存在 + // 非采购上架 改箱 (非激活的或者(激活被冻结)) 1 + // 出库回退上架 (激活被冻结) 2 + // */ + // if (serialStatus == 1 || serialStatus == 2) + // { + // if (res[0].IsActivate == true && res[0].IsDelete != true) + // return Result>.ReFailure(ResultCodes.SerialNumbersIsShelf); + // } + + // _logger.LogInformation($"请求序列号信息结果:{res[0].MaterialNumber}"); + // return Result>.ReSuccess(res); + //} + /// /// 获取物料;通过规格型号 /// diff --git a/src/WMS.Web.Domain/IService/ISerialNumberService.cs b/src/WMS.Web.Domain/IService/ISerialNumberService.cs index a31018dc..fb790710 100644 --- a/src/WMS.Web.Domain/IService/ISerialNumberService.cs +++ b/src/WMS.Web.Domain/IService/ISerialNumberService.cs @@ -42,6 +42,8 @@ namespace WMS.Web.Domain.IService /// /// /// - Task>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); + //Task>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); + Task> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); + } } diff --git a/src/WMS.Web.Domain/IService/Public/IOpsService.cs b/src/WMS.Web.Domain/IService/Public/IOpsService.cs index b0cf0648..7ada38fc 100644 --- a/src/WMS.Web.Domain/IService/Public/IOpsService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOpsService.cs @@ -13,6 +13,7 @@ namespace WMS.Web.Domain.IService.Public public interface IOpsService { Task> GetBox(OpsBoxRequest request); - Task>> GetSerialNumbers(SerialNumbersWmsRequest request); + // Task>> GetSerialNumbers(SerialNumbersWmsRequest request); + Task> GetSerialNumbers(SerialNumbersWmsRequest request); } } diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 39a8ee15..061b3a8c 100644 --- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -20,8 +20,12 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task AddRange(List entitys, bool isTransaction = true); + //根据序列号模糊搜索信息 - Task> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); + Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); + + ////根据序列号模糊搜索信息 + //Task> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0); //根据序列号搜索信息 Task Get(string serialNumber); /// 查询实体集合 diff --git a/src/WMS.Web.Domain/Services/Public/OpsService.cs b/src/WMS.Web.Domain/Services/Public/OpsService.cs index ed2f80eb..19383d34 100644 --- a/src/WMS.Web.Domain/Services/Public/OpsService.cs +++ b/src/WMS.Web.Domain/Services/Public/OpsService.cs @@ -54,22 +54,39 @@ namespace WMS.Web.Domain.Services.Public var list = JsonConvert.DeserializeObject>(res.data.date); return list; } + /// /// 获取序列码 /// /// /// /// - public async Task>> GetSerialNumbers(SerialNumbersWmsRequest request) + public async Task> GetSerialNumbers(SerialNumbersWmsRequest request) { string endStr = "api/WmsBox/GetSerialNumber"; Dictionary dicHeaders = new Dictionary(); //dicHeaders.Add("Authorization", "Bearer " + token); //_httpClientService.BuildHttpClient(contentHeaders); - var res = await _httpClientService.PostAsync>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders); + var res = await _httpClientService.PostAsync>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders); return res; } + ///// + ///// 获取序列码 + ///// + ///// + ///// + ///// + //public async Task>> GetSerialNumbers(SerialNumbersWmsRequest request) + //{ + // string endStr = "api/WmsBox/GetSerialNumber"; + // Dictionary dicHeaders = new Dictionary(); + // //dicHeaders.Add("Authorization", "Bearer " + token); + // //_httpClientService.BuildHttpClient(contentHeaders); + // var res = await _httpClientService.PostAsync>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders); + // return res; + //} + private async Task GetToken() { OpsLogin login = new OpsLogin() diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 4d690e4e..94960172 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -14,6 +14,7 @@ using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Values; +using WMS.Web.Domain.Values.Erp; using WMS.Web.Domain.Values.Single; namespace WMS.Web.Domain.Services @@ -570,6 +571,7 @@ namespace WMS.Web.Domain.Services if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReSuccess(); } + /// /// 获取供应链系统序列码 /// @@ -579,29 +581,42 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) + public async Task> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) { //外层方法没有调到数据是null 如果这里查询到序列码 var list = await _serialNumbersRepositories.GetEntityList(new List() { serialNumber }); if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null) - return Result>.ReFailure(ResultCodes.MateriaNoData); + return Result.ReFailure(ResultCodes.MateriaNoData); //进入供应链系统调数据 _logger.LogInformation($"拉取供应链系统条码->{serialNumber}"); var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber }); if (!res.IsSuccess) - return Result>.ReFailure(ResultCodes.MateriaNoData); + return Result.ReFailure(ResultCodes.MateriaNoData); _logger.LogInformation($"拉取供应链系统条码结果:->{JsonConvert.SerializeObject(res)}"); //插入序列码信息 - for (int j = 0; j < res.Data.Count; j++) + if (res.Data.IsTwo > 1) { - SerialNumbers entity = new SerialNumbers(res.Data[j].SerialNumber, res.Data[j].MaterialNumber - , 0, 0, res.Data[j].Creator, res.Data[j].CreateTime, null, res.Data[j].IsTwo, res.Data[j].TwoSerialNumber, res.Data[j].IsNotCount); - var isSuccess = await _serialNumbersRepositories.AddRange(new List() { entity }); - if (!isSuccess) return Result>.ReFailure(ResultCodes.DateWriteError); - } - var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus); - if (res_s == null) return Result>.ReFailure(ResultCodes.MateriaNoData); + string[]serial= res.Data.TwoSerialNumber.Split(','); + for(int j=0;j() { entity }); + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + } + + var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus); + if (res_s == null) return Result.ReFailure(ResultCodes.MateriaNoData); /* 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 ; 状态为冻结的扫描成功; 不存在的序列号提示:产品信息不存在 @@ -610,11 +625,126 @@ namespace WMS.Web.Domain.Services */ if (serialStatus == 1 || serialStatus == 2) { - if (res_s[0].IsActivate == true && res_s[0].IsDelete != true) - return Result>.ReFailure(ResultCodes.SerialNumbersIsShelf); + if (res_s.IsActivate == true && res_s.IsDelete != true) + return Result.ReFailure(ResultCodes.SerialNumbersIsShelf); } - - return Result>.ReSuccess(res_s); + return Result.ReSuccess(res_s); + } + else + { + + + SerialNumbers entity = new SerialNumbers(res.Data.SerialNumber, res.Data.MaterialNumber + , 0, 0, res.Data.Creator, res.Data.CreateTime, null, res.Data.IsTwo, res.Data.TwoSerialNumber, res.Data.IsNotCount); + var isSuccess = await _serialNumbersRepositories.AddRange(new List() { entity }); + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + + var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus); + if (res_s == null) return Result.ReFailure(ResultCodes.MateriaNoData); + /* + 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 ; 状态为冻结的扫描成功; + 不存在的序列号提示:产品信息不存在 + 非采购上架 改箱 (非激活的或者(激活被冻结)) 1 + 出库回退上架 (激活被冻结) 2 + */ + if (serialStatus == 1 || serialStatus == 2) + { + if (res_s.IsActivate == true && res_s.IsDelete != true) + return Result.ReFailure(ResultCodes.SerialNumbersIsShelf); + } + return Result.ReSuccess(res_s); + } } + + + ///// + ///// 获取供应链系统序列码 + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //public async Task> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) + //{ + // //外层方法没有调到数据是null 如果这里查询到序列码 + // var list = await _serialNumbersRepositories.GetEntityList(new List() { serialNumber }); + // if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null) + // return Result.ReFailure(ResultCodes.MateriaNoData); + // //进入供应链系统调数据 + // _logger.LogInformation($"拉取供应链系统条码->{serialNumber}"); + // var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber }); + // if (!res.IsSuccess) + // return Result.ReFailure(ResultCodes.MateriaNoData); + + // _logger.LogInformation($"拉取供应链系统条码结果:->{JsonConvert.SerializeObject(res)}"); + // //插入序列码信息 + // SerialNumbers entity = new SerialNumbers(res.Data.SerialNumber, res.Data.MaterialNumber + // , 0, 0, res.Data.Creator, res.Data.CreateTime, null, res.Data.IsTwo, res.Data.TwoSerialNumber, res.Data.IsNotCount); + // var isSuccess = await _serialNumbersRepositories.AddRange(new List() { entity }); + // if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + + // var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus); + // if (res_s == null) return Result.ReFailure(ResultCodes.MateriaNoData); + // /* + // 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 ; 状态为冻结的扫描成功; + // 不存在的序列号提示:产品信息不存在 + // 非采购上架 改箱 (非激活的或者(激活被冻结)) 1 + // 出库回退上架 (激活被冻结) 2 + // */ + // if (serialStatus == 1 || serialStatus == 2) + // { + // if (res_s.IsActivate == true && res_s.IsDelete != true) + // return Result.ReFailure(ResultCodes.SerialNumbersIsShelf); + // } + // return Result.ReSuccess(res_s); + //} + ///// + ///// 获取供应链系统序列码 + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //public async Task>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) + //{ + // //外层方法没有调到数据是null 如果这里查询到序列码 + // var list = await _serialNumbersRepositories.GetEntityList(new List() { serialNumber }); + // if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null) + // return Result>.ReFailure(ResultCodes.MateriaNoData); + // //进入供应链系统调数据 + // _logger.LogInformation($"拉取供应链系统条码->{serialNumber}"); + // var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber }); + // if (!res.IsSuccess) + // return Result>.ReFailure(ResultCodes.MateriaNoData); + + // _logger.LogInformation($"拉取供应链系统条码结果:->{JsonConvert.SerializeObject(res)}"); + // //插入序列码信息 + // for (int j = 0; j < res.Data.Count; j++) + // { + // SerialNumbers entity = new SerialNumbers(res.Data[j].SerialNumber, res.Data[j].MaterialNumber + // , 0, 0, res.Data[j].Creator, res.Data[j].CreateTime, null, res.Data[j].IsTwo, res.Data[j].TwoSerialNumber, res.Data[j].IsNotCount); + // var isSuccess = await _serialNumbersRepositories.AddRange(new List() { entity }); + // if (!isSuccess) return Result>.ReFailure(ResultCodes.DateWriteError); + // } + // var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus); + // if (res_s == null) return Result>.ReFailure(ResultCodes.MateriaNoData); + // /* + // 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 ; 状态为冻结的扫描成功; + // 不存在的序列号提示:产品信息不存在 + // 非采购上架 改箱 (非激活的或者(激活被冻结)) 1 + // 出库回退上架 (激活被冻结) 2 + // */ + // if (serialStatus == 1 || serialStatus == 2) + // { + // if (res_s[0].IsActivate == true && res_s[0].IsDelete != true) + // return Result>.ReFailure(ResultCodes.SerialNumbersIsShelf); + // } + + // return Result>.ReSuccess(res_s); + //} } } diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 3a6ea47e..058a6f21 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -253,21 +253,18 @@ namespace WMS.Web.Repositories } + /// /// 根据序列号 /// /// /// - public async Task> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) + public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) { - List response2 = new List(); MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); if (!materials_result.IsSuccess) - { - response2.Add(response); - return response2; - } + return response; var materials = materials_result.Data.ToList(); var m = materials.Where(f => (f.Specifications.Equals(serialNumber) || f.MaterialNumber.Equals(serialNumber))); @@ -279,8 +276,7 @@ namespace WMS.Web.Repositories response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, material.MaterialNumber); response.MaterialNumber = material.MaterialNumber; response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, material.MaterialNumber); - response2.Add(response); - return response2; + return response; } var res = _context.SerialNumbers .GroupJoin(_context.BoxInventory.Include(x => x.Details), serial => serial.BoxId, boxInventory => boxInventory.BoxId, (serial, boxInventory) => new { serial, boxInventory }) @@ -319,19 +315,19 @@ namespace WMS.Web.Repositories if (entity.boxInventory != null) response.IsBoxInventory = entity.boxInventory.Details.SelectMany(s => s.SerialNumbers).Where(w => serialNumber.Equals(w)).Count() >= 1 ? true : false; response.IsTwo = entity.serial.IsTwo; - if(entity.serial.TwoSerialNumber!=null) - { - response.TwoSerialNumber=entity.serial.TwoSerialNumber.Replace(entity.serial.SerialNumber,"").Replace(",",""); - response.IsNotCount = entity.serial.IsNotCount; + if (entity.serial.TwoSerialNumber != null) + { + response.TwoSerialNumber = entity.serial.TwoSerialNumber.Replace(entity.serial.SerialNumber, "").Replace(",", ""); + response.IsNotCount = entity.serial.IsNotCount; } else { response.TwoSerialNumber = ""; response.IsNotCount = "0"; } - response.IsNotCount = entity.serial.IsNotCount; - response2.Add(response); - return response2; + response.IsNotCount = entity.serial.IsNotCount; + + return response; } /// @@ -339,16 +335,12 @@ namespace WMS.Web.Repositories /// /// /// - private async Task> GetSerialNumber_Ops(string serialNumber, int serialStatus = 0) + private async Task GetSerialNumber_Ops(string serialNumber, int serialStatus = 0) { - List response2 = new List(); MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); if (!materials_result.IsSuccess) - { - response2.Add(response); - return response2; - } + return response; var materials = materials_result.Data.ToList(); var res = _context.SerialNumbers_Ops @@ -382,9 +374,142 @@ namespace WMS.Web.Repositories //if (entity.boxInventory != null) // response.IsBoxInventory = entity.boxInventory.Details.SelectMany(s => s.SerialNumbers).Where(w => serialNumber.Equals(w)).Count() >= 1 ? true : false; - response2.Add(response); - return response2; + + return response; } + + ///// + ///// 根据序列号 + ///// + ///// + ///// + //public async Task> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0) + //{ + // List response2 = new List(); + // MaterialResponse response = new MaterialResponse(); + // var materials_result = await _erpService.BillQueryForMaterial(); + // if (!materials_result.IsSuccess) + // { + // response2.Add(response); + // return response2; + // } + // var materials = materials_result.Data.ToList(); + + // var m = materials.Where(f => (f.Specifications.Equals(serialNumber) || f.MaterialNumber.Equals(serialNumber))); + // if (!string.IsNullOrEmpty(orgCode)) + // m = m.Where(w => w.OrgCode.Equals(orgCode)); + // var material = m.FirstOrDefault(); + // if (material != null) + // { + // response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, material.MaterialNumber); + // response.MaterialNumber = material.MaterialNumber; + // response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, material.MaterialNumber); + // response2.Add(response); + // return response2; + // } + // var res = _context.SerialNumbers + // .GroupJoin(_context.BoxInventory.Include(x => x.Details), serial => serial.BoxId, boxInventory => boxInventory.BoxId, (serial, boxInventory) => new { serial, boxInventory }) + // .SelectMany(x => x.boxInventory.DefaultIfEmpty(), (p, boxInventory) => new { p.serial, boxInventory }) + // .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)); + // //0:所有 1 非激活的或者(激活被冻结) 2 激活被冻结 3 激活非冻结 + // //因为要 1和2的情况 要区分提示 所以条件扩大 然后根据具体的情况提示 + // //if (serialStatus == 1) + // // res = res.Where(w => w.serial.IsActivate != true || (w.serial.IsActivate == true && w.serial.IsDelete == true)); + // if (serialStatus == 2) + // res = res.Where(w => w.serial.IsActivate == 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, serialStatus); + // else + // return null; + // } + // response.IsOldOps = false; + // response.BoxId = entity.serial.BoxId; + // response.BoxBillNo = entity?.box?.BoxBillNo ?? ""; + // response.SubStockCode = entity?.boxInventory?.SubStockCode ?? ""; + // response.StockCode = entity?.boxInventory?.StockCode ?? ""; + // response.SerialNumber = entity.serial.SerialNumber; + // response.IsDelete = entity.serial.IsDelete ?? false; + // response.IsActivate = entity.serial.IsActivate ?? false; + // response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.serial.MaterialNumber); + // response.MaterialNumber = entity.serial.MaterialNumber; + // response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.serial.MaterialNumber); + // if (entity.boxInventory != null) + // response.IsBoxInventory = entity.boxInventory.Details.SelectMany(s => s.SerialNumbers).Where(w => serialNumber.Equals(w)).Count() >= 1 ? true : false; + // response.IsTwo = entity.serial.IsTwo; + // if(entity.serial.TwoSerialNumber!=null) + // { + // response.TwoSerialNumber=entity.serial.TwoSerialNumber.Replace(entity.serial.SerialNumber,"").Replace(",",""); + // response.IsNotCount = entity.serial.IsNotCount; + // } + // else + // { + // response.TwoSerialNumber = ""; + // response.IsNotCount = "0"; + // } + // response.IsNotCount = entity.serial.IsNotCount; + // response2.Add(response); + // return response2; + //} + + ///// + ///// 查询老ops序列码 + ///// + ///// + ///// + //private async Task> GetSerialNumber_Ops(string serialNumber, int serialStatus = 0) + //{ + // List response2 = new List(); + // MaterialResponse response = new MaterialResponse(); + // var materials_result = await _erpService.BillQueryForMaterial(); + // if (!materials_result.IsSuccess) + // { + // response2.Add(response); + // return response2; + // } + // var materials = materials_result.Data.ToList(); + + // var res = _context.SerialNumbers_Ops + // .GroupJoin(_context.BoxInventory.Include(x => x.Details), serial => serial.BoxId, boxInventory => boxInventory.BoxId, (serial, boxInventory) => new { serial, boxInventory }) + // .SelectMany(x => x.boxInventory.DefaultIfEmpty(), (p, boxInventory) => new { p.serial, boxInventory }) + // .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)); + // //0:所有 1 非激活的或者(激活被冻结) 2 激活被冻结 3 激活非冻结 + // //因为要 1和2的情况 要区分提示 所以条件扩大 然后根据具体的情况提示 + // //if (serialStatus == 1) + // // res = res.Where(w => w.serial.IsActivate != true || (w.serial.IsActivate == true && w.serial.IsDelete == true)); + // if (serialStatus == 2) + // res = res.Where(w => w.serial.IsActivate == 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; + // response.IsBoxInventory = true;//如果是老ops序列号 默认有库存 + // response.BoxId = entity.serial.BoxId; + // response.BoxBillNo = entity?.box?.BoxBillNo ?? ""; + // response.SubStockCode = entity?.boxInventory?.SubStockCode ?? ""; + // response.StockCode = entity?.boxInventory?.StockCode ?? ""; + // response.SerialNumber = entity.serial.SerialNumber; + // response.IsDelete = entity.serial.IsDelete ?? false; + // response.IsActivate = entity.serial.IsActivate ?? false; + // response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.serial.MaterialNumber); + // response.MaterialNumber = entity.serial.MaterialNumber; + // response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.serial.MaterialNumber); + // //if (entity.boxInventory != null) + // // response.IsBoxInventory = entity.boxInventory.Details.SelectMany(s => s.SerialNumbers).Where(w => serialNumber.Equals(w)).Count() >= 1 ? true : false; + + // response2.Add(response); + // return response2; + //} /// /// 老ops条码批量修改 ///