Files
BarCode-Api/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs
2025-04-30 17:01:05 +08:00

724 lines
34 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AutoMapper;
using BarCode.Web.Core.Dto.Erp;
using BarCode.Web.Core.Dto.Erp.Org;
using BarCode.Web.Core.Dto.Erp.Supplier;
using BarCode.Web.Core.Dto.Login;
using BarCode.Web.Core.Dto.SerialNumbers;
using BarCode.Web.Core.Help;
using BarCode.Web.Domain.Entitys;
using BarCode.Web.Domain.Infrastructure;
using BarCode.Web.Domain.IService.Public;
using BarCode.Web.Domain.Mappers;
using BarCode.Web.Domain.Services.Public;
using BarCode.Web.Domain.Values.Single;
using BarCode.Web.Repositories.Configuration;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Logging;
using Npoi.Mapper;
using NPOI.POIFS.FileSystem;
using Quartz.Logging;
using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace BarCode.Web.Repositories
{
/// <summary>
/// 序列码
/// </summary>
public class SerialNumbersRepositories : IAllFielRepositories<SerialNumbersExportRequest>, IAllFielRepositories<SerialNumberQueryRequest>, ISerialNumbersRepositories
{
private readonly ILoginRepositories _loginRepositories;
private readonly RepositoryDbContext _context;
private readonly IBasicsRepositories _basicsRepositories;
private readonly IMapper _mapper;
private readonly IErpService _erpService;
private readonly ISingleDataService _singleDataService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
public SerialNumbersRepositories(RepositoryDbContext context,
ILoginRepositories loginRepositories,
IBasicsRepositories basicsRepositories, IMapper mapper, IErpService erpService,
ISingleDataService singleDataService, IErpBasicDataExtendService erpBasicDataExtendService)
{
_context = context;
_basicsRepositories = basicsRepositories;
_loginRepositories = loginRepositories;
_mapper = mapper;
_erpService = erpService;
_singleDataService = singleDataService;
_erpBasicDataExtendService = erpBasicDataExtendService;
}
/// <summary>
/// 批量添加
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<bool> AddRange(List<SerialNumbers> entitys, bool isTransaction = true)
{
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _context.Database.BeginTransaction();
if (entitys != null && entitys.Count != 0)
{
await _context.SerialNumbers.AddRangeAsync(entitys);
await _context.SaveChangesAsync();
string newSuitNumber = "";
string oldSuitNumber = "";
foreach (var item in entitys)
{
//自动生成序列码
string sn= item.GenerateSerialNumber();//alter by yzh
item.GenerateNumberCode();
if(item.IsTwo>1)//大于1说明是套装
{
if (item.thisNumber % item.IsTwo == 0)
{
newSuitNumber = oldSuitNumber;
}
else
{
oldSuitNumber = sn;
newSuitNumber = sn;
}
}
else
{
newSuitNumber = sn;
newSuitNumber = sn;
}
item.GenerateSuitNumber(newSuitNumber);
item.GenerateTwoSerialNumber(newSuitNumber);
}
foreach (var item in entitys)
{
string s = GetTwoSerialNumber(entitys, item.SuitNumber);
item.GenerateTwoSerialNumber(s);
}
await _context.SaveChangesAsync();
}
if (_transaction != null)
_transaction.Commit();
return true;
}
/// <summary>
/// 产生套装条码
/// </summary>
/// <param name="entitys"></param>
/// <param name="SuitNumber"></param>
public string GetTwoSerialNumber(List<SerialNumbers> entitys, string SuitNumber)
{
string strReturn = "";
foreach (var item in entitys)
{
if (item.SuitNumber == SuitNumber)
{
if (strReturn == "")
{
strReturn = item.SerialNumber;
}
else
{
strReturn = strReturn + "," + item.SerialNumber;
}
}
}
return strReturn;
}
/// <summary>
/// 批量修改
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<bool> EditEntityList(List<SerialNumbers> entitys, bool isTransaction = true)
{
IDbContextTransaction _transaction = null;
if (isTransaction)
_transaction = _context.Database.BeginTransaction();
List<long> list = entitys.Select(s => s.Id).ToList();
var res = await _context.SerialNumbers
.Where(f => list.Contains(f.Id)).ToListAsync();
_mapper.ToMapLongList(entitys, res);
await _context.SaveChangesAsync();
if (_transaction != null)
_transaction.Commit();
return true;
}
/// <summary>
/// 获取集合
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
}
/// <summary>
/// 根据生成记录Id查询序列号
/// </summary>
/// <param name="gRIds"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityListByGRIds(List<int> gRIds)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => gRIds.Contains(f.GenerateRecordId))
.ToListAsync();
}
/// <summary>
/// 根据生成记录Id查询序列号
/// </summary>
/// <param name="gRIds"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityListByGRId(int gRId)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => gRId == f.GenerateRecordId)
.ToListAsync();
}
/// <summary>
/// 列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<(List<SerialNumberInfoResponse> list, int total)> GetListAsync(SerialNumberQueryRequest dto, LoginInDto loginInfo)
{
int companyId = loginInfo.UserInfo.CompanyId;
List<string> mNumber = new List<string>();
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking()
.GroupJoin(_context.Box, serial => serial.BoxId, box => box.Id, (serial, box) => new { serial, box })
.SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, box })
.GroupJoin(_context.SerialNumberGenerateRecord, s => s.serial.GenerateRecordId, sg => sg.Id, (serial, sg) => new { serial.serial, serial.box, sg })
.SelectMany(x => x.sg.DefaultIfEmpty(), (p, sg) => new { p.serial, p.box, sg })
.OrderByDescending(o => o.serial.Id)
.Where(f => dto.GenerateRecordId == f.serial.GenerateRecordId);
if (loginInfo.UserInfo.IsAdmin != true && !string.IsNullOrEmpty(dto.OrgCode))
{
var rec_type = dto.OrgCode.Substring(0, 1);
var rec_code = dto.OrgCode.Substring(2, dto.OrgCode.Length - 2);
if (rec_type.Equals("s"))//供应商
query = query.Where(w => rec_code == w.serial.SupplierCode);
else//查其他单据(组织)
query = query.Where(w => rec_code == w.serial.OrgCode);
}
if (dto.IsPrint != null)
query = query.Where(w => dto.IsPrint == true ? w.serial.PrintNumber > 0 : w.serial.PrintNumber <= 0);
if (dto.IsUse != null)
query = query.Where(w => w.serial.IsUse == dto.IsUse);
if (dto.SerialNumbers != null && dto.SerialNumbers.Count() > 0)
query = query.Where(w => dto.SerialNumbers.Contains(w.serial.SerialNumber));
if (dto.NumberCodes != null && dto.NumberCodes.Count() > 0)
query = query.Where(w => dto.NumberCodes.Contains(w.serial.NumberCode));
if (!string.IsNullOrEmpty(dto.BoxBillNo))
query = query.Where(w => w.box.BoxBillNo.Equals(dto.BoxBillNo));
if (dto.SerialNumberBegin != null && dto.SerialNumberBegin != 0)
{
if (dto.SerialNumberEnd != null && dto.SerialNumberEnd != 0)
query = query.Where(w => w.serial.Id >= dto.SerialNumberBegin);
else
query = query.Where(w => w.serial.Id == dto.SerialNumberBegin);
}
if (dto.SerialNumberEnd != null && dto.SerialNumberEnd != 0)
{
if (dto.SerialNumberBegin != null && dto.SerialNumberBegin != 0)
query = query.Where(w => w.serial.Id <= dto.SerialNumberEnd);
else
query = query.Where(w => w.serial.Id == dto.SerialNumberEnd);
}
//V01.05.00: 数字序列号区间查询
if (!string.IsNullOrEmpty(dto.NumberCodeBegin))
{
int number = Convert.ToInt32(dto.NumberCodeBegin.Substring(6, dto.NumberCodeBegin.Length - 6));
if (!string.IsNullOrEmpty(dto.NumberCodeEnd))
query = query.Where(w => w.serial.Number >= number);
else
query = query.Where(w => w.serial.Number == number);
}
if (!string.IsNullOrEmpty(dto.NumberCodeEnd))
{
int number = Convert.ToInt32(dto.NumberCodeEnd.Substring(6, dto.NumberCodeEnd.Length - 6));
if (!string.IsNullOrEmpty(dto.NumberCodeBegin))
query = query.Where(w => w.serial.Number <= number);
else
query = query.Where(w => w.serial.Number == number);
}
if (dto.DownLoadBeginDate != null)
query = query.Where(w => w.serial.DownLoadTime >= dto.DownLoadBeginDate);
if (dto.DownLoadEndDate != null)
{
DateTime dt_end = ((DateTime)dto.DownLoadEndDate).AddDays(1);
query = query.Where(w => w.serial.DownLoadTime <= dt_end);
}
if (dto.PrintBeginDate != null)
query = query.Where(w => w.serial.PrintTime >= dto.PrintBeginDate);
if (dto.PrintEndDate != null)
{
DateTime dt_end = ((DateTime)dto.PrintEndDate).AddDays(1);
query = query.Where(w => w.serial.PrintTime <= dt_end);
}
if (dto.IsUpdateMaterial != null)
{
if (dto.IsUpdateMaterial == true)
query = query.Where(w => !string.IsNullOrEmpty(w.serial.Old_MaterialNumber));
else
query = query.Where(w => string.IsNullOrEmpty(w.serial.Old_MaterialNumber));
}
if(dto.isTwo>1)//是否为两件装如果大于1说明为两件装
{
query = query.Where(w => w.serial.IsTwo>1);
}
int total = await query.CountAsync();
var list = await query.Select(s => new SerialNumberInfoResponse()
{
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.MaterialNumber),
Old_Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.Old_MaterialNumber == null ? "" : s.serial.Old_MaterialNumber),
MaterialNumber = s.serial.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.serial.MaterialNumber),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.serial.MaterialNumber),
SerialNumber = s.serial.SerialNumber,
NumberCode = s.serial.NumberCode,
Number = s.sg == null ? 0 : s.sg.Number,
Id = s.serial.Id,
IsUse = s.serial.IsUse,
IsUseStr = s.serial.IsUse == true ? "是" : "否",
//序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印
IsEnablePrint = (s.serial.BoxId <= 0 && s.serial.IsUse == true) ? false : true,
Box = s.box == null ? "" : s.box.BoxBillNo,
Creator = _singleDataService.GetSingleData(SingleAction.Users, companyId, s.serial.CreatorId),
CreateTime = s.serial.CreateTime.DateToStringSeconds(),
PrintNumber = s.serial.PrintNumber,
DownLoadNumber = s.serial.DownLoadNumber,
DownLoadTime = s.serial.DownLoadTime.DateToStringSeconds(),
PrintTime = s.serial.PrintTime.DateToStringSeconds(),
IsTwo=s.serial.IsTwo,
TwoSerialNumber = s.serial.TwoSerialNumber.Replace(s.serial.SerialNumber,"").Replace(",","")
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
return (list, total);
}
/// <summary>
/// 导出列表
/// </summary>
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<(object obj, int total)> GetListField(SerialNumbersExportRequest dto, LoginInDto loginInfo)
{
List<string> mNumber = new List<string>();
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
//供应商
var supplier_result = await _erpService.BillQueryForSupplier();
List<ErpSupplierDto> suppliers = new List<ErpSupplierDto>();
if (supplier_result.IsSuccess)
suppliers = supplier_result.Data.ToList();
//取组织
var org_result = await _erpService.BillQueryForOrg();
List<ErpOrgDto> orgs = new List<ErpOrgDto>();
if (org_result.IsSuccess)
orgs = org_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking()
.GroupJoin(_context.SerialNumberGenerateRecord, serial => serial.GenerateRecordId, sg => sg.Id, (serial, sg) => new { serial, sg })
.SelectMany(x => x.sg.DefaultIfEmpty(), (p, sg) => new { p.serial, sg })
.OrderByDescending(o => o.serial.Id)
.Where(f => dto.Ids.Contains(f.serial.GenerateRecordId));
int total = await query.CountAsync();
var list = await query.Select(s => new SerialNumbersExportReponse()
{
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.MaterialNumber),
MaterialNumber = s.serial.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.serial.MaterialNumber),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.serial.MaterialNumber),
SerialNumber = s.serial.SerialNumber,
NumberCode = s.serial.NumberCode,
Number = s.sg == null ? 0 : s.sg.Number,
SupplierOrOrg = string.IsNullOrEmpty(s.sg.SupplierCode) ? _erpBasicDataExtendService.GetOrgName(orgs, s.sg.OrgCode)
: _erpBasicDataExtendService.GetSupplierName(suppliers, s.sg.SupplierCode)
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
return (list, total);
}
/// <summary>
/// 根据箱Id来搜索序列号
/// </summary>
/// <param name="boxId"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<(List<SerialNumbersResponse> list, int total)> GetEntityListByBoxId(SerialNumberByBoxIdQueryRequest dto)
{
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking()
.OrderByDescending(o => o.CompleteCartonTime)//以装箱时间先后排序
.Where(f => f.BoxId == dto.BoxId);
int total = await query.CountAsync();
var list = await query.Select(s => new SerialNumbersResponse()
{
BoxId = s.BoxId,
IsCarton = (s.BoxId > 0 || s.IsUse == true) ? true : false,
IsOldData = true,//扫箱号获取 默认就是老数据
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialNumber),
MaterialNumber = s.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialNumber),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.MaterialNumber),
SerialNumber = s.SerialNumber,
IsUseNumber = s.IsUseNumber,
NumberCode = s.NumberCode,
TwoSerialNumber=s.TwoSerialNumber.Replace(s.SerialNumber,"").Replace(",","")
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
return (list, total);
}
public async Task<List<SerialNumbersResponse>?> GetEntityList(string serialNumber, string orgCode, LoginInDto loginInfo)
{
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking().Where(w => 1 == 1);
//if (loginInfo.UserInfo.IsAdmin != true && !string.IsNullOrEmpty(orgCode))
//{
// var rec_type = orgCode.Substring(0, 1);
// var rec_code = orgCode.Substring(2, orgCode.Length - 2);
// if (rec_type.Equals("s"))//供应商
// query = query.Where(w => rec_code == w.SupplierCode);
// else//查其他单据(组织)
// query = query.Where(w => rec_code == w.OrgCode);
//}
query = query.Where(f => f.SerialNumber.Equals(serialNumber)
|| f.NumberCode.Equals(serialNumber));
var entity = await query.FirstOrDefaultAsync();
if (entity == null) return null;
////如果为单套产品,那就直接取就行了。
if (entity.IsTwo < 2)
{
List<SerialNumbersResponse> list = new List<SerialNumbersResponse>();
SerialNumbersResponse s=new SerialNumbersResponse();
s.BoxId = entity.BoxId;
s.IsCarton = (entity.BoxId > 0 || entity.IsUse == true) ? true : false;
s.IsOldData = false;//根据序列号获取 默认是false
s.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialNumber);
s.MaterialNumber = entity.MaterialNumber;
s.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialNumber);
s.BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, entity.MaterialNumber);
s.SerialNumber = entity.SerialNumber;
s.IsUseNumber = entity.IsUseNumber;
s.NumberCode = entity.NumberCode;
s.IsTwo = entity.IsTwo;
s.SuitNumber = entity.SuitNumber;
list.Add(s);
return list;
//return new SerialNumbersResponse()
//{
// BoxId = entity.BoxId,
// IsCarton = (entity.BoxId > 0 || entity.IsUse == true) ? true : false,
// IsOldData = false,//根据序列号获取 默认是false
// Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialNumber),
// MaterialNumber = entity.MaterialNumber,
// MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialNumber),
// BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, entity.MaterialNumber),
// SerialNumber = entity.SerialNumber,
// IsUseNumber = entity.IsUseNumber,
// NumberCode = entity.NumberCode,
// IsTwo = entity.IsTwo,
// SuitNumber = entity.SuitNumber
//};
}
else//跟据套装去查对应的
{
string suitNumber = entity.SuitNumber;
var query2 = _context.SerialNumbers.AsNoTracking()
//.OrderByDescending(o => o.CompleteCartonTime)//以装箱时间先后排序
.Where(f => f.SuitNumber == suitNumber);
int total = await query.CountAsync();
var list = await query2.Select(s => new SerialNumbersResponse()
{
BoxId = s.BoxId,
IsCarton = (s.BoxId > 0 || s.IsUse == true) ? true : false,
IsOldData = false,//扫箱号获取 默认就是老数据
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialNumber),
MaterialNumber = s.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialNumber),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.MaterialNumber),
SerialNumber = s.SerialNumber,
IsUseNumber = s.IsUseNumber,
NumberCode = s.NumberCode,
IsTwo = s.IsTwo,
SuitNumber = s.SuitNumber
}).ToListAsync();
return list;
// //var query2 = _context.SerialNumbers.AsNoTracking().Where(w => 1 == 1);
// //query2 = query2.Where(f => f.SuitNumber.Equals(suitNumber)
// //);
// //var entity2 = await query2.FirstOrDefaultAsync();
// //if (entity2 == null) return null;
// //return new SerialNumbersResponse()
// //{
// // BoxId = entity2.BoxId,
// // IsCarton = (entity2.BoxId > 0 || entity2.IsUse == true) ? true : false,
// // IsOldData = false,//根据序列号获取 默认是false
// // Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity2.MaterialNumber),
// // MaterialNumber = entity2.MaterialNumber,
// // MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity2.MaterialNumber),
// // BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, entity2.MaterialNumber),
// // SerialNumber = entity2.SerialNumber,
// // IsUseNumber = entity2.IsUseNumber,
// // NumberCode = entity2.NumberCode,
// // IsTwo = entity2.IsTwo,
// // SuitNumber = entity2.SuitNumber
// //};
}
}
public async Task<SerialNumbersResponse?> GetEntity(string serialNumber, string orgCode, LoginInDto loginInfo)
{
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking().Where(w => 1 == 1);
//if (loginInfo.UserInfo.IsAdmin != true && !string.IsNullOrEmpty(orgCode))
//{
// var rec_type = orgCode.Substring(0, 1);
// var rec_code = orgCode.Substring(2, orgCode.Length - 2);
// if (rec_type.Equals("s"))//供应商
// query = query.Where(w => rec_code == w.SupplierCode);
// else//查其他单据(组织)
// query = query.Where(w => rec_code == w.OrgCode);
//}
query = query.Where(f => f.SerialNumber.Equals(serialNumber)
|| f.NumberCode.Equals(serialNumber));
var entity = await query.FirstOrDefaultAsync();
if (entity == null) return null;
////如果为单套产品,那就直接取就行了。
//if (entity.IsTwo < 2)
//{
return new SerialNumbersResponse()
{
BoxId = entity.BoxId,
IsCarton = (entity.BoxId > 0 || entity.IsUse == true) ? true : false,
IsOldData = false,//根据序列号获取 默认是false
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialNumber),
MaterialNumber = entity.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialNumber),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, entity.MaterialNumber),
SerialNumber = entity.SerialNumber,
IsUseNumber = entity.IsUseNumber,
NumberCode = entity.NumberCode,
IsTwo = entity.IsTwo,
SuitNumber = entity.SuitNumber,
TwoSerialNumber= entity.TwoSerialNumber.Replace(entity.SerialNumber,"").Replace(",","")
};
//}
// else//跟据套装去查对应的
// {
// string suitNumber=entity.SuitNumber;
// var query2 = _context.SerialNumbers.AsNoTracking()
// //.OrderByDescending(o => o.CompleteCartonTime)//以装箱时间先后排序
//.Where(f => f.SuitNumber == suitNumber);
// int total = await query.CountAsync();
// var list = await query2.Select(s => new SerialNumbersResponse()
// {
// BoxId = s.BoxId,
// IsCarton = (s.BoxId > 0 || s.IsUse == true) ? true : false,
// IsOldData = false,//扫箱号获取 默认就是老数据
// Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialNumber),
// MaterialNumber = s.MaterialNumber,
// MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialNumber),
// BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.MaterialNumber),
// SerialNumber = s.SerialNumber,
// IsUseNumber = s.IsUseNumber,
// NumberCode = s.NumberCode
// }).ToListAsync();
// //var query2 = _context.SerialNumbers.AsNoTracking().Where(w => 1 == 1);
// //query2 = query2.Where(f => f.SuitNumber.Equals(suitNumber)
// //);
// //var entity2 = await query2.FirstOrDefaultAsync();
// //if (entity2 == null) return null;
// //return new SerialNumbersResponse()
// //{
// // BoxId = entity2.BoxId,
// // IsCarton = (entity2.BoxId > 0 || entity2.IsUse == true) ? true : false,
// // IsOldData = false,//根据序列号获取 默认是false
// // Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity2.MaterialNumber),
// // MaterialNumber = entity2.MaterialNumber,
// // MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity2.MaterialNumber),
// // BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, entity2.MaterialNumber),
// // SerialNumber = entity2.SerialNumber,
// // IsUseNumber = entity2.IsUseNumber,
// // NumberCode = entity2.NumberCode,
// // IsTwo = entity2.IsTwo,
// // SuitNumber = entity2.SuitNumber
// //};
// }
}
/// <summary>
/// 条码列表导出
/// </summary>
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<(object obj, int total)> GetListField(SerialNumberQueryRequest dto, LoginInDto loginInfo)
{
return await GetListAsync(dto, loginInfo);
}
/// <summary>
/// 根据箱Id获取序列码
/// </summary>
/// <param name="boxIds"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityListByBoxIds(List<int> boxIds)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => boxIds.Contains(f.BoxId))
.ToListAsync();
}
/// <summary>
/// 根据套装码获取序列码
/// </summary>
/// <param name="boxIds"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityListBySuitNumber(string suitNumber)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => f.TwoSerialNumber.Contains(suitNumber))
.ToListAsync();
}
/// <summary>
/// wms系统查询序列码 支持数字序列码
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<SerialNumbers> GetEntityWms(string serialNumbers)
{
var entity = await _context.SerialNumbers.AsNoTracking()
.FirstOrDefaultAsync(f => serialNumbers.Equals(f.SerialNumber) || serialNumbers.Equals(f.NumberCode));
return entity;
}
public async Task<List<SerialNumbers>> GetEntityListContainNumber(List<string> serialNumbers)
{
return await _context.SerialNumbers.AsNoTracking()
// .Where(f => serialNumbers.Contains(f.SerialNumber) || serialNumbers.Contains(f.NumberCode) || serialNumbers.Contains(f.TwoSerialNumber))//alter by yzh
.Where(f => serialNumbers.Contains(f.SerialNumber) || serialNumbers.Contains(f.NumberCode))
.ToListAsync();
}
public async Task<SerialNumbersExternalResponse> GetExternal(string serialNumber)
{
List<string> mNumber = new List<string>();
var materials_result = await _erpService.BillQueryForMaterial();
List<ErpMaterialDto> materials = new List<ErpMaterialDto>();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.SerialNumbers.AsNoTracking()
.GroupJoin(_context.SerialNumberGenerateRecord, serial => serial.GenerateRecordId, sg => sg.Id, (serial, sg) => new { serial, sg })
.SelectMany(x => x.sg.DefaultIfEmpty(), (p, sg) => new { p.serial, sg })
.OrderByDescending(o => o.serial.Id)
.Where(f => serialNumber.Equals(f.serial.SerialNumber) || serialNumber.Equals(f.serial.NumberCode));
var res = await query.Select(s => new SerialNumbersExternalResponse()
{
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.MaterialNumber),
MaterialNumber = s.serial.MaterialNumber,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.serial.MaterialNumber),
CreateTime = s.serial.CreateTime.DateToStringSeconds(),
PurchaseBillNo = s.sg.PurchaseBillNo,
SerialNumber = serialNumber,
Supplier = _singleDataService.GetSingleData(SingleAction.Suppliers, s.sg.CompanyId, s.serial.SupplierCode)
}).FirstOrDefaultAsync();
return res;
}
}
}