后道零头箱打印逻辑修改

This commit is contained in:
赵正易 2025-06-10 15:24:24 +08:00
parent 5ce662b5bc
commit fba29f73fc
3 changed files with 61 additions and 17 deletions

View File

@ -146,5 +146,7 @@ namespace ZR.Model.Dto
public int? RemainderBoxPrintCount { get; set; }
// 箱标签当前序号
public int? CurrentBoxLabelSequence { get; set; }
// 零头箱打印数
public int? PackageNum { get; set; }
}
}

View File

@ -1522,35 +1522,72 @@ namespace ZR.Service.Business
public QcBackEndWorkorderPrintLabelDetailDto SearchWorkOrderLabelDetail(string workOrder)
{
QcBackEndWorkorderPrintLabelDetailDto result = new();
// 首先检查工单是否存在
var workorderInfo = Context
.Queryable<QcBackEndServiceWorkorder>()
.Where(it => it.WorkOrder == workOrder)
.First();
if (workorderInfo == null)
{
throw new Exception($"异常:工单不存在{workOrder}");
}
// 检查打印配置
var packageLabelConfig = Context
.Queryable<QcBackendBaseOutpackage>()
.Where(it => workorderInfo.Description.Contains(it.CheckStr))
.First();
if (packageLabelConfig == null)
{
throw new Exception($"异常:零件满箱配置不存在{workOrder}");
}
// 验证配置有效性
int maxPackageNum = packageLabelConfig.PackageNum ?? 0;
if (maxPackageNum <= 0)
{
throw new ArgumentException($"无效的满箱数量:{maxPackageNum}", nameof(maxPackageNum));
}
QcBackEndWorkorderPrintLabelDetailDto result = new QcBackEndWorkorderPrintLabelDetailDto();
// 扫描零件计数LabelType=2合并查询条件
result.ScannedPartCount = Context
.Queryable<QcBackEndRecordLabelScan>()
.Where(it => it.WorkOrder == workOrder)
.Where(it => it.LabelType == 2)
.Where(it => it.WorkOrder == workOrder && it.LabelType == 2)
.Count();
// 扫描箱标签计数LabelType=1且LabelSort>0合并查询条件
result.ScannedBoxLabelCount = Context
.Queryable<QcBackEndRecordLabelScan>()
.Where(it => it.WorkOrder == workOrder)
.Where(it => it.LabelType == 1)
.Where(it => it.LabelSort > 0)
.Where(it => it.WorkOrder == workOrder && it.LabelType == 1 && it.LabelSort > 0)
.Count();
// 重新打印计数LabelType=1且LabelCode包含IsAgain=1合并查询条件
result.RePrintCount = Context
.Queryable<QcBackendRecordLabelPrint>()
.Where(it => it.WorkOrder == workOrder)
.Where(it => it.LabelType == 1)
.Where(it => it.LabelCode.Contains("IsAgain=1"))
.Where(it => it.WorkOrder == workOrder && it.LabelType == 1 && it.LabelCode.Contains("IsAgain=1"))
.Count();
// 零头箱打印计数LabelType=1且未装满合并查询条件
result.RemainderBoxPrintCount = Context
.Queryable<QcBackendRecordLabelPrint>()
.Where(it => it.WorkOrder == workOrder)
.Where(it => it.LabelType == 1)
.Where(it => it.IsFull == 0)
.Where(it => it.WorkOrder == workOrder && it.LabelType == 1 && it.IsFull == 0)
.Count();
// 当前箱标签最大序列号,合并查询条件并增加空值处理
result.CurrentBoxLabelSequence = Context
.Queryable<QcBackendRecordLabelPrint>()
.Where(it => it.WorkOrder == workOrder)
.Where(it => it.LabelType == 1)
.Max(it => it.SerialNumber);
.Where(it => it.WorkOrder == workOrder && it.LabelType == 1)
.Max(it => (int?)it.SerialNumber) ?? 0;
// 零头箱计算
result.PackageNum = result.ScannedPartCount > 0
? result.ScannedPartCount % maxPackageNum
: 0;
return result;
}
}

View File

@ -446,11 +446,16 @@ namespace ZR.Service.mes.wms
{
return "库位参数异常,库位不存在";
}
//20250610 后道标签并且是满箱的可跳过检查
if (resultionPackage.originalCode.Contains("LabelBy=HD") && resultionPackage.originalCode.Contains("IsFull=1"))
//TODO 平滑过渡方案,后道标签可跳过检查
if (resultionPackage.originalCode.Contains("LabelBy=HD"))
{
isStrict = false;
}
//20250610 后道标签并且是满箱的可跳过检查
/*if (resultionPackage.originalCode.Contains("LabelBy=HD") && resultionPackage.originalCode.Contains("IsFull=1"))
{
isStrict = false;
}*/
if (isStrict && wmInfo.Remark != "临时")
{
// 3. 提取流水号