1127 lines
54 KiB
C#
1127 lines
54 KiB
C#
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.OpenXmlFormats.Wordprocessing;
|
||
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);
|
||
|
||
|
||
string sNumberCode = GetTwoNumberCode(entitys, item.SuitNumber);
|
||
item.GenerateTwoNumberCode(sNumberCode);
|
||
|
||
|
||
}
|
||
|
||
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="SuitNumber"></param>
|
||
public string GetTwoNumberCode(List<SerialNumbers> entitys, string SuitNumber)
|
||
{
|
||
string strReturn = "";
|
||
foreach (var item in entitys)
|
||
{
|
||
|
||
if (item.SuitNumber == SuitNumber)
|
||
{
|
||
if (strReturn == "")
|
||
{
|
||
strReturn = item.NumberCode;
|
||
}
|
||
else
|
||
{
|
||
strReturn = strReturn + "," + item.NumberCode;
|
||
}
|
||
|
||
}
|
||
}
|
||
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>> GetUseEntityListByGRIds(List<int> gRIds)
|
||
{
|
||
return await _context.SerialNumbers.AsNoTracking()
|
||
.Where(f => gRIds.Contains(f.GenerateRecordId) && f.IsUse==true)
|
||
.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 queery2= _context.ser
|
||
|
||
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>
|
||
/// 列表2
|
||
/// </summary>
|
||
/// <param name="dto"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
public async Task<(List<SerialNumberInfoResponse2> list, int total)> GetListAsync2(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 queery2= _context.ser
|
||
|
||
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 SerialNumberInfoResponse2()
|
||
{
|
||
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,
|
||
SerialNumber2 = s.serial.SerialNumber,
|
||
NumberCode = s.serial.NumberCode,
|
||
NumberCode2 = s.serial.NumberCode,
|
||
Number = s.sg == null ? 0 : s.sg.Number,
|
||
Id = s.serial.Id,
|
||
Id2 = 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,
|
||
SuitNumber=s.serial.SuitNumber,
|
||
TwoSerialNumber = s.serial.TwoSerialNumber.Replace(s.serial.SerialNumber, "").Replace(",", "")
|
||
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
|
||
List<SerialNumberInfoResponse2> returnList= new List<SerialNumberInfoResponse2>();
|
||
|
||
|
||
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
SerialNumberInfoResponse2 list2 = new SerialNumberInfoResponse2();
|
||
if (list[i] != null)
|
||
{
|
||
if (list[i].SuitNumber == list[i].SerialNumber)
|
||
{
|
||
|
||
List<string> sn = new List<string>();
|
||
sn.Add(list[i].TwoSerialNumber.Replace(list[i].SuitNumber,"").Replace(",",""));
|
||
var serialNumbers = await GetEntityList(sn);
|
||
//说明是两件装,且是两件装的主号
|
||
list2.Specifications = list[i].Specifications;
|
||
list2.Old_Specifications = list[i].Old_Specifications;
|
||
list2.MaterialNumber = list[i].MaterialNumber;
|
||
list2.MaterialName = list[i].MaterialName;
|
||
list2.BarCode = list[i].BarCode;
|
||
list2.SerialNumber = serialNumbers[0].SerialNumber;
|
||
list2.SerialNumber2 = list[i].SerialNumber;
|
||
list2.NumberCode = serialNumbers[0].NumberCode;
|
||
list2.NumberCode2 = list[i].NumberCode;
|
||
list2.Number = list[i].Number;
|
||
list2.Id = serialNumbers[0].Id;
|
||
list2.Id2 = list[i].Id;
|
||
list2.IsUse = list[i].IsUse;
|
||
list2.IsUseStr = list[i].IsUseStr;
|
||
list2.IsEnablePrint = list[i].IsEnablePrint;
|
||
list2.Box = list[i].Box;
|
||
list2.Creator = list[i].Creator;
|
||
list2.CreateTime = list[i].CreateTime;
|
||
list2.PrintNumber = list[i].PrintNumber;
|
||
list2.DownLoadNumber = list[i].DownLoadNumber;
|
||
list2.DownLoadTime= list[i].DownLoadTime;
|
||
list2.PrintTime = list[i].PrintTime;
|
||
list2.IsTwo = list[i].IsTwo;
|
||
list2.TwoSerialNumber = list[i].TwoSerialNumber;
|
||
returnList.Add(list2);
|
||
}
|
||
else
|
||
{
|
||
List<string> sn = new List<string>();
|
||
sn.Add(list[i].SerialNumber);
|
||
var serialNumbers = await GetEntityList(sn);
|
||
//判断号码有没有在要返回的list中,如果有的话,那就不加了。
|
||
|
||
if(dto.SerialNumbers!=null)
|
||
{
|
||
bool exist = dto.SerialNumbers.Contains(serialNumbers[0].SuitNumber);
|
||
if (exist == false)
|
||
{
|
||
List<string> sn2 = new List<string>();
|
||
sn2.Add(list[i].TwoSerialNumber.Replace(list[i].SerialNumber, "").Replace(",", "")) ;
|
||
serialNumbers = await GetEntityList(sn2);
|
||
//说明是两件装,且是两件装的主号
|
||
list2.Specifications = list[i].Specifications;
|
||
list2.Old_Specifications = list[i].Old_Specifications;
|
||
list2.MaterialNumber = list[i].MaterialNumber;
|
||
list2.MaterialName = list[i].MaterialName;
|
||
list2.BarCode = list[i].BarCode;
|
||
list2.SerialNumber = serialNumbers[0].SerialNumber;
|
||
list2.SerialNumber2 = list[i].SerialNumber;
|
||
list2.NumberCode = serialNumbers[0].NumberCode;
|
||
list2.NumberCode2 = list[i].NumberCode;
|
||
list2.Number = list[i].Number;
|
||
list2.Id = serialNumbers[0].Id;
|
||
list2.Id2 = list[i].Id;
|
||
list2.IsUse = list[i].IsUse;
|
||
list2.IsUseStr = list[i].IsUseStr;
|
||
list2.IsEnablePrint = list[i].IsEnablePrint;
|
||
list2.Box = list[i].Box;
|
||
list2.Creator = list[i].Creator;
|
||
list2.CreateTime = list[i].CreateTime;
|
||
list2.PrintNumber = list[i].PrintNumber;
|
||
list2.DownLoadNumber = list[i].DownLoadNumber;
|
||
list2.DownLoadTime = list[i].DownLoadTime;
|
||
list2.PrintTime = list[i].PrintTime;
|
||
list2.IsTwo = list[i].IsTwo;
|
||
list2.TwoSerialNumber = list[i].TwoSerialNumber;
|
||
returnList.Add(list2);
|
||
}
|
||
else
|
||
{
|
||
list2.DownLoadTime = list[i].DownLoadTime;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
return (returnList, 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();
|
||
|
||
if (dto.IsTwo == 2)
|
||
{
|
||
List<SerialNumbersExportReponse2> returnList = new List<SerialNumbersExportReponse2>();
|
||
|
||
|
||
|
||
var list = await query.Select(s => new SerialNumbersExportReponse2()
|
||
{
|
||
PurchaseBillNo = s.sg == null ? "" : s.sg.PurchaseBillNo,
|
||
SuitNumber=s.serial.SuitNumber,
|
||
TwoSerialNumber=s.serial.TwoSerialNumber,
|
||
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();
|
||
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
SerialNumbersExportReponse2 list2 = new SerialNumbersExportReponse2();
|
||
if (list[i] != null)
|
||
{
|
||
if (list[i].SuitNumber == list[i].SerialNumber)
|
||
{
|
||
List<string> sn = new List<string>();
|
||
sn.Add(list[i].TwoSerialNumber.Replace(list[i].SuitNumber, "").Replace(",", ""));
|
||
var serialNumbers = await GetEntityList(sn);
|
||
list2.PurchaseBillNo = list[i].PurchaseBillNo;
|
||
list2.Specifications = list[i].Specifications;
|
||
list2.MaterialNumber = list[i].MaterialNumber;
|
||
list2.MaterialName = list[i].MaterialName;
|
||
list2.BarCode = list[i].BarCode;
|
||
list2.SerialNumber = serialNumbers[0].SerialNumber;
|
||
list2.SerialNumber2 = list[i].SerialNumber;
|
||
list2.NumberCode = serialNumbers[0].NumberCode;
|
||
list2.NumberCode2 = list[i].NumberCode;
|
||
list2.Number = list[i].Number;
|
||
list2.SupplierOrOrg = list[i].SupplierOrOrg;
|
||
returnList.Add(list2);
|
||
}
|
||
}
|
||
}
|
||
return (returnList, total);
|
||
}
|
||
else
|
||
{
|
||
var list = await query.Select(s => new SerialNumbersExportReponse()
|
||
{
|
||
PurchaseBillNo= s.sg == null ? "" : s.sg.PurchaseBillNo,
|
||
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 && f.IsNotCount!="1");
|
||
|
||
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.IsUseNumber==true)? s.TwoNumberCode.Replace(s.NumberCode,"").Replace(",",""): 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;
|
||
bool isNumber = false;
|
||
if(entity.TwoNumberCode.IndexOf(serialNumber)>=0)
|
||
{
|
||
isNumber = true;
|
||
}
|
||
////如果为单套产品,那就直接取就行了。
|
||
//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= (isNumber==true)? entity.TwoNumberCode.Replace(entity.NumberCode, "").Replace(",", ""): entity.TwoSerialNumber.Replace(entity.SerialNumber,"").Replace(",","")
|
||
// TwoNumberCode = entity.TwoNumberCode.Replace(entity.NumberCode, "").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)
|
||
{
|
||
if (dto.isTwo == 2)
|
||
{
|
||
return await GetListAsync2(dto, loginInfo);
|
||
}
|
||
else
|
||
{
|
||
return await GetListAsync(dto, loginInfo);
|
||
}
|
||
}
|
||
|
||
///// <summary>
|
||
///// 两件装条码列表导出
|
||
///// </summary>
|
||
///// <param name="dto"></param>
|
||
///// <param name="loginInfo"></param>
|
||
///// <returns></returns>
|
||
//public async Task<(object obj, int total)> GetListField2(SerialNumberQueryRequest dto, LoginInDto loginInfo)
|
||
//{
|
||
// return await GetListAsync2(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>
|
||
///// 跟据特定条件得到产生的序列号列表(主要是内部使用)
|
||
///// </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;
|
||
//以上为以前的
|
||
//var entity = await _context.SerialNumbers.AsNoTracking()
|
||
//.FirstOrDefaultAsync(f => f.TwoSerialNumber.Contains(serialNumbers) || f.TwoNumberCode.Equals(serialNumbers));
|
||
//return entity;
|
||
}
|
||
|
||
/// <summary>
|
||
/// wms系统查询序列码 支持数字序列码
|
||
/// </summary>
|
||
/// <param name="serialNumbers"></param>
|
||
/// <returns></returns>
|
||
public async Task<List<SerialNumbers>> GetEntityWmsBySuitNumber(string suitNumber)
|
||
{
|
||
return await _context.SerialNumbers.AsNoTracking()
|
||
.Where(f => f.TwoSerialNumber.Contains(suitNumber) || f.TwoNumberCode.Contains(suitNumber))
|
||
.ToListAsync();
|
||
|
||
}
|
||
|
||
|
||
|
||
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;
|
||
|
||
}
|
||
}
|
||
}
|