添加项目文件。
This commit is contained in:
723
src/BarCode.Web.Repositories/SerialNumbersRepositories.cs
Normal file
723
src/BarCode.Web.Repositories/SerialNumbersRepositories.cs
Normal 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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user