From fba29f73fceb9f7ff2bfc0075136c598f5fcb51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Tue, 10 Jun 2025 15:24:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E9=81=93=E9=9B=B6=E5=A4=B4=E7=AE=B1?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/QcBackEndServiceWorkorderDto.cs | 2 + ZR.Service/mes/qc/backend/QcBackEndService.cs | 67 ++++++++++++++----- .../wms/WMentryWarehousing_productService.cs | 9 ++- 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/ZR.Model/MES/qc/DTO/backend/QcBackEndServiceWorkorderDto.cs b/ZR.Model/MES/qc/DTO/backend/QcBackEndServiceWorkorderDto.cs index 7cccb3ad..76e89001 100644 --- a/ZR.Model/MES/qc/DTO/backend/QcBackEndServiceWorkorderDto.cs +++ b/ZR.Model/MES/qc/DTO/backend/QcBackEndServiceWorkorderDto.cs @@ -146,5 +146,7 @@ namespace ZR.Model.Dto public int? RemainderBoxPrintCount { get; set; } // 箱标签当前序号 public int? CurrentBoxLabelSequence { get; set; } + // 零头箱打印数 + public int? PackageNum { get; set; } } } \ No newline at end of file diff --git a/ZR.Service/mes/qc/backend/QcBackEndService.cs b/ZR.Service/mes/qc/backend/QcBackEndService.cs index fbbca790..99dae00d 100644 --- a/ZR.Service/mes/qc/backend/QcBackEndService.cs +++ b/ZR.Service/mes/qc/backend/QcBackEndService.cs @@ -1522,35 +1522,72 @@ namespace ZR.Service.Business public QcBackEndWorkorderPrintLabelDetailDto SearchWorkOrderLabelDetail(string workOrder) { - QcBackEndWorkorderPrintLabelDetailDto result = new(); + // 首先检查工单是否存在 + var workorderInfo = Context + .Queryable() + .Where(it => it.WorkOrder == workOrder) + .First(); + + if (workorderInfo == null) + { + throw new Exception($"异常:工单不存在{workOrder}"); + } + + // 检查打印配置 + var packageLabelConfig = Context + .Queryable() + .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() - .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() - .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() - .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() - .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() - .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; } } diff --git a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs index da338ce6..c5fa47fb 100644 --- a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs +++ b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs @@ -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. 提取流水号