添加项目文件。

This commit is contained in:
2025-04-30 17:01:05 +08:00
commit 1eaedea85d
261 changed files with 33985 additions and 0 deletions

View File

@@ -0,0 +1,723 @@
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;
}
}
}