改回了序列码,不使用List

This commit is contained in:
2025-05-13 16:40:50 +08:00
parent c609fb7327
commit e0074faba1
8 changed files with 375 additions and 49 deletions

View File

@@ -522,11 +522,11 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns>
[HttpGet]
[Route("GetMaterial")]
public async Task<Result<List<MaterialResponse>>> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false, [FromQuery] int? serialStatus = 0)
public async Task<Result<MaterialResponse>> 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<List<MaterialResponse>>.ReFailure(ResultCodes.Token_Invalid_Error);
return Result<MaterialResponse>.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<List<MaterialResponse>>.ReFailure(ResultCodes.SerialNumbersIsShelf);
if (res.IsActivate == true && res.IsDelete != true)
return Result<MaterialResponse>.ReFailure(ResultCodes.SerialNumbersIsShelf);
}
_logger.LogInformation($"请求序列号信息结果:{res[0].MaterialNumber}");
return Result<List<MaterialResponse>>.ReSuccess(res);
_logger.LogInformation($"请求序列号信息结果:{res.MaterialNumber}");
return Result<MaterialResponse>.ReSuccess(res);
}
///// <summary>
///// 根据序列号或规格型号,物料编码搜索物料信息-PDA
///// </summary>
///// <param name="serialNumber">序列号或规格型号或物料编码</param>
///// <param name="orgCode">组织编码</param>
///// <param name="IsOps">是否需要支持老ops条码查询</param>
///// <param name="serialStatus">
///// 盘点 改箱 所有的序列号 0或者不传
///// 非采购上架 (非激活的或者(激活被冻结)) 1
///// 出库回退上架 (激活被冻结) 2
///// 入库回退下架 (激活非冻结) 3
///// 出库 (激活非冻结) 3
///// </param>
///// <returns></returns>
//[HttpGet]
//[Route("GetMaterial")]
//public async Task<Result<List<MaterialResponse>>> 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<List<MaterialResponse>>.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<MaterialResponse>.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<List<MaterialResponse>>.ReFailure(ResultCodes.SerialNumbersIsShelf);
// }
// _logger.LogInformation($"请求序列号信息结果:{res[0].MaterialNumber}");
// return Result<List<MaterialResponse>>.ReSuccess(res);
//}
/// <summary>
/// 获取物料;通过规格型号
/// </summary>

View File

@@ -42,6 +42,8 @@ namespace WMS.Web.Domain.IService
/// <param name="IsOps"></param>
/// <param name="serialStatus"></param>
/// <returns></returns>
Task<Result<List<MaterialResponse>>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
//Task<Result<List<MaterialResponse>>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
Task<Result<MaterialResponse>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
}
}

View File

@@ -13,6 +13,7 @@ namespace WMS.Web.Domain.IService.Public
public interface IOpsService
{
Task<List<OpsBoxResponse>> GetBox(OpsBoxRequest request);
Task<Result<List<SerialNumbersWmsResponse>>> GetSerialNumbers(SerialNumbersWmsRequest request);
// Task<Result<List<SerialNumbersWmsResponse>>> GetSerialNumbers(SerialNumbersWmsRequest request);
Task<Result<SerialNumbersWmsResponse>> GetSerialNumbers(SerialNumbersWmsRequest request);
}
}

View File

@@ -20,8 +20,12 @@ namespace WMS.Web.Domain.Infrastructure
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<bool> AddRange(List<SerialNumbers> entitys, bool isTransaction = true);
//根据序列号模糊搜索信息
Task<List<MaterialResponse>> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
Task<MaterialResponse> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
////根据序列号模糊搜索信息
//Task<List<MaterialResponse>> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
//根据序列号搜索信息
Task<SerialNumbersResponse> Get(string serialNumber);
/// 查询实体集合

View File

@@ -54,22 +54,39 @@ namespace WMS.Web.Domain.Services.Public
var list = JsonConvert.DeserializeObject<List<OpsBoxResponse>>(res.data.date);
return list;
}
/// <summary>
/// 获取序列码
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<Result<List<SerialNumbersWmsResponse>>> GetSerialNumbers(SerialNumbersWmsRequest request)
public async Task<Result<SerialNumbersWmsResponse>> GetSerialNumbers(SerialNumbersWmsRequest request)
{
string endStr = "api/WmsBox/GetSerialNumber";
Dictionary<string, string> dicHeaders = new Dictionary<string, string>();
//dicHeaders.Add("Authorization", "Bearer " + token);
//_httpClientService.BuildHttpClient(contentHeaders);
var res = await _httpClientService.PostAsync<Result<List<SerialNumbersWmsResponse>>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders);
var res = await _httpClientService.PostAsync<Result<SerialNumbersWmsResponse>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders);
return res;
}
///// <summary>
///// 获取序列码
///// </summary>
///// <param name="request"></param>
///// <returns></returns>
///// <exception cref="NotImplementedException"></exception>
//public async Task<Result<List<SerialNumbersWmsResponse>>> GetSerialNumbers(SerialNumbersWmsRequest request)
//{
// string endStr = "api/WmsBox/GetSerialNumber";
// Dictionary<string, string> dicHeaders = new Dictionary<string, string>();
// //dicHeaders.Add("Authorization", "Bearer " + token);
// //_httpClientService.BuildHttpClient(contentHeaders);
// var res = await _httpClientService.PostAsync<Result<List<SerialNumbersWmsResponse>>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders);
// return res;
//}
private async Task<string> GetToken()
{
OpsLogin login = new OpsLogin()

View File

@@ -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();
}
/// <summary>
/// 获取供应链系统序列码
/// </summary>
@@ -579,29 +581,42 @@ namespace WMS.Web.Domain.Services
/// <param name="serialStatus"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<Result<List<MaterialResponse>>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
public async Task<Result<MaterialResponse>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
{
//外层方法没有调到数据是null 如果这里查询到序列码
var list = await _serialNumbersRepositories.GetEntityList(new List<string>() { serialNumber });
if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null)
return Result<List<MaterialResponse>>.ReFailure(ResultCodes.MateriaNoData);
return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
//进入供应链系统调数据
_logger.LogInformation($"拉取供应链系统条码->{serialNumber}");
var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber });
if (!res.IsSuccess)
return Result<List<MaterialResponse>>.ReFailure(ResultCodes.MateriaNoData);
return Result<MaterialResponse>.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<SerialNumbers>() { entity });
if (!isSuccess) return Result<List<MaterialResponse>>.ReFailure(ResultCodes.DateWriteError);
string[]serial= res.Data.TwoSerialNumber.Split(',');
for(int j=0;j<serial.Length;j++)
{
string isNotCount = "0";
if (serial[j] != serialNumber)
{
isNotCount = "1";
}
else
{
isNotCount = "0";
}
SerialNumbers entity = new SerialNumbers(serial[j], res.Data.MaterialNumber
, 0, 0, res.Data.Creator, res.Data.CreateTime, null, res.Data.IsTwo, res.Data.TwoSerialNumber, isNotCount);
var isSuccess = await _serialNumbersRepositories.AddRange(new List<SerialNumbers>() { entity });
if (!isSuccess) return Result<MaterialResponse>.ReFailure(ResultCodes.DateWriteError);
}
var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus);
if (res_s == null) return Result<List<MaterialResponse>>.ReFailure(ResultCodes.MateriaNoData);
if (res_s == null) return Result<MaterialResponse>.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<List<MaterialResponse>>.ReFailure(ResultCodes.SerialNumbersIsShelf);
if (res_s.IsActivate == true && res_s.IsDelete != true)
return Result<MaterialResponse>.ReFailure(ResultCodes.SerialNumbersIsShelf);
}
return Result<MaterialResponse>.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<SerialNumbers>() { entity });
if (!isSuccess) return Result<MaterialResponse>.ReFailure(ResultCodes.DateWriteError);
var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus);
if (res_s == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
/*
以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 状态为冻结的扫描成功;
不存在的序列号提示:产品信息不存在
非采购上架 改箱 (非激活的或者(激活被冻结)) 1
出库回退上架 (激活被冻结) 2
*/
if (serialStatus == 1 || serialStatus == 2)
{
if (res_s.IsActivate == true && res_s.IsDelete != true)
return Result<MaterialResponse>.ReFailure(ResultCodes.SerialNumbersIsShelf);
}
return Result<MaterialResponse>.ReSuccess(res_s);
}
}
return Result<List<MaterialResponse>>.ReSuccess(res_s);
}
///// <summary>
///// 获取供应链系统序列码
///// </summary>
///// <param name="serialNumber"></param>
///// <param name="orgCode"></param>
///// <param name="IsOps"></param>
///// <param name="serialStatus"></param>
///// <returns></returns>
///// <exception cref="NotImplementedException"></exception>
//public async Task<Result<MaterialResponse>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
//{
// //外层方法没有调到数据是null 如果这里查询到序列码
// var list = await _serialNumbersRepositories.GetEntityList(new List<string>() { serialNumber });
// if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null)
// return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
// //进入供应链系统调数据
// _logger.LogInformation($"拉取供应链系统条码->{serialNumber}");
// var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber });
// if (!res.IsSuccess)
// return Result<MaterialResponse>.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<SerialNumbers>() { entity });
// if (!isSuccess) return Result<MaterialResponse>.ReFailure(ResultCodes.DateWriteError);
// var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus);
// if (res_s == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
// /*
// 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 状态为冻结的扫描成功;
// 不存在的序列号提示:产品信息不存在
// 非采购上架 改箱 (非激活的或者(激活被冻结)) 1
// 出库回退上架 (激活被冻结) 2
// */
// if (serialStatus == 1 || serialStatus == 2)
// {
// if (res_s.IsActivate == true && res_s.IsDelete != true)
// return Result<MaterialResponse>.ReFailure(ResultCodes.SerialNumbersIsShelf);
// }
// return Result<MaterialResponse>.ReSuccess(res_s);
//}
///// <summary>
///// 获取供应链系统序列码
///// </summary>
///// <param name="serialNumber"></param>
///// <param name="orgCode"></param>
///// <param name="IsOps"></param>
///// <param name="serialStatus"></param>
///// <returns></returns>
///// <exception cref="NotImplementedException"></exception>
//public async Task<Result<List<MaterialResponse>>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
//{
// //外层方法没有调到数据是null 如果这里查询到序列码
// var list = await _serialNumbersRepositories.GetEntityList(new List<string>() { serialNumber });
// if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null)
// return Result<List<MaterialResponse>>.ReFailure(ResultCodes.MateriaNoData);
// //进入供应链系统调数据
// _logger.LogInformation($"拉取供应链系统条码->{serialNumber}");
// var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber });
// if (!res.IsSuccess)
// return Result<List<MaterialResponse>>.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<SerialNumbers>() { entity });
// if (!isSuccess) return Result<List<MaterialResponse>>.ReFailure(ResultCodes.DateWriteError);
// }
// var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus);
// if (res_s == null) return Result<List<MaterialResponse>>.ReFailure(ResultCodes.MateriaNoData);
// /*
// 以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 状态为冻结的扫描成功;
// 不存在的序列号提示:产品信息不存在
// 非采购上架 改箱 (非激活的或者(激活被冻结)) 1
// 出库回退上架 (激活被冻结) 2
// */
// if (serialStatus == 1 || serialStatus == 2)
// {
// if (res_s[0].IsActivate == true && res_s[0].IsDelete != true)
// return Result<List<MaterialResponse>>.ReFailure(ResultCodes.SerialNumbersIsShelf);
// }
// return Result<List<MaterialResponse>>.ReSuccess(res_s);
//}
}
}

View File

@@ -253,21 +253,18 @@ namespace WMS.Web.Repositories
}
/// <summary>
/// 根据序列号
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<List<MaterialResponse>> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
public async Task<MaterialResponse> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
{
List<MaterialResponse> response2 = new List<MaterialResponse>();
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 })
@@ -330,8 +326,8 @@ namespace WMS.Web.Repositories
response.IsNotCount = "0";
}
response.IsNotCount = entity.serial.IsNotCount;
response2.Add(response);
return response2;
return response;
}
/// <summary>
@@ -339,16 +335,12 @@ namespace WMS.Web.Repositories
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
private async Task<List<MaterialResponse>> GetSerialNumber_Ops(string serialNumber, int serialStatus = 0)
private async Task<MaterialResponse> GetSerialNumber_Ops(string serialNumber, int serialStatus = 0)
{
List<MaterialResponse> response2 = new List<MaterialResponse>();
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;
}
///// <summary>
///// 根据序列号
///// </summary>
///// <param name="serialNumbers"></param>
///// <returns></returns>
//public async Task<List<MaterialResponse>> GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
//{
// List<MaterialResponse> response2 = new List<MaterialResponse>();
// 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;
//}
///// <summary>
///// 查询老ops序列码
///// </summary>
///// <param name="serialNumbers"></param>
///// <returns></returns>
//private async Task<List<MaterialResponse>> GetSerialNumber_Ops(string serialNumber, int serialStatus = 0)
//{
// List<MaterialResponse> response2 = new List<MaterialResponse>();
// 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;
//}
/// <summary>
/// 老ops条码批量修改
/// </summary>