This commit is contained in:
2025-07-22 14:38:39 +08:00
parent 4dbd476de6
commit ce26015236
4 changed files with 427 additions and 5 deletions

View File

@@ -167,11 +167,20 @@ namespace BarCode.Web.Api.Controllers
string fileName = FileDownLoadOrderType.SerialNumberInfo.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
string res = _option.Url + fileName;
Task.Run(async () =>
if (dto.isTwo == 2)
{
await _exportExcelService.ExportList<SerialNumberInfoResponse, SerialNumberQueryRequest>(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode);
});
Task.Run(async () =>
{
await _exportExcelService.ExportList<SerialNumberInfoResponse2, SerialNumberQueryRequest>(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode);
});
}
else
{
Task.Run(async () =>
{
await _exportExcelService.ExportList<SerialNumberInfoResponse, SerialNumberQueryRequest>(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode);
});
}
return Task.FromResult(Result<string>.ReSuccess(res));
}
/// <summary>

View File

@@ -3034,6 +3034,126 @@
第二个序列号
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Old_Specifications">
<summary>
转换前规格型号
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.BarCode">
<summary>
物料条码
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.SerialNumber">
<summary>
序列码
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.SerialNumber2">
<summary>
序列码2
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.NumberCode">
<summary>
数字序列码
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.NumberCode2">
<summary>
数字序列码2
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Id">
<summary>
序列码流水号
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Id2">
<summary>
序列码流水号2
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Number">
<summary>
数量
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.IsUse">
<summary>
是否使用
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.IsUseStr">
<summary>
是否使用
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Box">
<summary>
箱号
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.Creator">
<summary>
创建人
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.CreateTime">
<summary>
生成时间
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.PrintNumber">
<summary>
打印次数
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.DownLoadNumber">
<summary>
下载次数
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.PrintTime">
<summary>
最新打印时间
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.DownLoadTime">
<summary>
最新下载时间
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.IsEnablePrint">
<summary>
是否允许打印(序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印)
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.IsTwo">
<summary>
是否为两件装为了控制后面的变动设为整数形0和1看作12代表2件装3代表三件装 alter by yzh
</summary>
</member>
<member name="P:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberInfoResponse2.TwoSerialNumber">
<summary>
第二个序列号
</summary>
</member>
<member name="T:BarCode.Web.Core.Dto.SerialNumbers.SerialNumberQueryRequest">
<summary>
序列号列表搜索请求参数

View File

@@ -122,6 +122,140 @@ namespace BarCode.Web.Core.Dto.SerialNumbers
}
public class SerialNumberInfoResponse2
{
/// <summary>
/// 物料编码
/// </summary>
[Column("物料编码")]
public string MaterialNumber { get; set; } = string.Empty;
/// <summary>
/// 物料名称
/// </summary>
[Column("名称")]
public string MaterialName { get; set; } = string.Empty;
/// <summary>
/// 物料规格型号
/// </summary>
[Column("规格型号")]
public string Specifications { get; set; } = string.Empty;
/// <summary>
/// 转换前规格型号
/// </summary>
[Column("转换前规格型号")]
public string Old_Specifications { get; set; } = string.Empty;
/// <summary>
/// 物料条码
/// </summary>
[Column("条码")]
public string BarCode { get; set; } = string.Empty;
/// <summary>
/// 序列码
/// </summary>
[Column("序列码")]
public string SerialNumber { get; set; } = string.Empty;
/// <summary>
/// 序列码2
/// </summary>
[Column("序列码2")]
public string SerialNumber2 { get; set; } = string.Empty;
/// <summary>
/// 数字序列码
/// </summary>
[Column("数字序列码")]
public string NumberCode { get; set; } = string.Empty;
/// <summary>
/// 数字序列码2
/// </summary>
[Column("数字序列码2")]
public string NumberCode2 { get; set; } = string.Empty;
/// <summary>
/// 序列码流水号
/// </summary>
[Column("序号")]
public long Id { get; set; }
/// <summary>
/// 序列码流水号2
/// </summary>
[Column("序号2")]
public long Id2 { get; set; }
/// <summary>
/// 数量
/// </summary>
[Column("数量")]
public int Number { get; set; } = 0;
/// <summary>
/// 是否使用
/// </summary>
[Ignore]
public bool IsUse { get; set; } = false;
/// <summary>
/// 是否使用
/// </summary>
[Column("是否使用")]
public string IsUseStr { get; set; } = "";
/// <summary>
/// 箱号
/// </summary>
[Column("所在箱号")]
public string Box { get; set; } = string.Empty;
/// <summary>
/// 创建人
/// </summary>
[Ignore]
public string Creator { get; set; } = string.Empty;
/// <summary>
/// 生成时间
/// </summary>
[Column("生成时间")]
public string CreateTime { get; set; } = string.Empty;
/// <summary>
/// 打印次数
/// </summary>
[Column("打印次数")]
public int PrintNumber { get; set; } = 0;
/// <summary>
/// 下载次数
/// </summary>
[Column("下载次数")]
public int DownLoadNumber { get; set; } = 0;
/// <summary>
/// 最新打印时间
/// </summary>
[Column("最近打印时间")]
public string PrintTime { get; set; } = string.Empty;
/// <summary>
/// 最新下载时间
/// </summary>
[Column("最近下载时间")]
public string DownLoadTime { get; set; } = string.Empty;
/// <summary>
/// 是否允许打印(序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印)
/// </summary>
[Ignore]
public bool IsEnablePrint { get; set; } = true;
/// <summary>
/// 是否为两件装为了控制后面的变动设为整数形0和1看作12代表2件装3代表三件装 alter by yzh
/// </summary>
[Ignore]
public int IsTwo { get; set; } = 1;
/// <summary>
/// 第二个序列号
/// </summary>
[Ignore]
public string TwoSerialNumber { get; set; } = string.Empty;
}
/// <summary>
/// 序列号列表搜索返回参数
/// </summary>

View File

@@ -371,6 +371,146 @@ namespace BarCode.Web.Repositories
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 && f.serial.SuitNumber==f.serial.SerialNumber);
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,
TwoSerialNumber = s.serial.TwoSerialNumber.Replace(s.serial.SerialNumber, "").Replace(",", "")
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
return (list, total);
}
/// <summary>
/// 导出列表
/// </summary>
@@ -686,8 +826,27 @@ namespace BarCode.Web.Repositories
/// <returns></returns>
public async Task<(object obj, int total)> GetListField(SerialNumberQueryRequest dto, LoginInDto loginInfo)
{
return await GetListAsync(dto, 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>