From 2f368ff35c7f8e1407fad437e0dd9b85fc6a745e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Thu, 22 May 2025 19:37:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E9=81=93=E8=A7=A6=E6=91=B8=E5=B1=8F?= =?UTF-8?q?=E6=BB=A1=E7=AE=B1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/qc/backend/QcBackEndController.cs | 43 ++ .../QcBackendRecordLabelPrintController.cs | 109 +++++ ...rAdmin.NET-后道标签打印记录-0522151305.zip | Bin 0 -> 9467 bytes .../backend/QcBackendRecordLabelPrintDto.cs | 54 +++ .../qc/backend/QcBackendRecordLabelPrint.cs | 105 +++++ .../qc/IService/backend/IQcBackEndService.cs | 12 + .../IQcBackendRecordLabelPrintService.cs | 23 ++ ZR.Service/mes/qc/backend/QcBackEndService.cs | 372 +++++++++++------- .../QcBackendRecordLabelPrintService.cs | 89 +++++ 9 files changed, 662 insertions(+), 145 deletions(-) create mode 100644 ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackendRecordLabelPrintController.cs create mode 100644 ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-后道标签打印记录-0522151305.zip create mode 100644 ZR.Model/MES/qc/DTO/backend/QcBackendRecordLabelPrintDto.cs create mode 100644 ZR.Model/MES/qc/backend/QcBackendRecordLabelPrint.cs create mode 100644 ZR.Service/mes/qc/IService/backend/IQcBackendRecordLabelPrintService.cs create mode 100644 ZR.Service/mes/qc/backend/QcBackendRecordLabelPrintService.cs diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackEndController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackEndController.cs index b05bae9a..3bbe9932 100644 --- a/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackEndController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackEndController.cs @@ -159,6 +159,49 @@ namespace ZR.Admin.WebApi.Controllers } + /// + /// 扫描外箱标签,添加想标签记录 + /// + /// + [HttpPost("ScanPackageLabel")] + [AllowAnonymous] + public IActionResult ScanPackageLabel([FromBody] QcBackEndLabelScanDto parm) + { + try + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _QcBackEndService.ScanPackageLabel(modal); + + return SUCCESS(response); + } + catch (Exception ex) + { + return SUCCESS("请刷新页面,错误代码:" + ex.Message); + } + + } + + /// + /// 判断是否要扫描箱标签 + /// + /// + [HttpGet("CheckPackageIsFullAndNeedScanPackageLabel")] + [AllowAnonymous] + public IActionResult CheckPackageIsFullAndNeedScanPackageLabel(string workorder) + { + try + { + var response = _QcBackEndService.CheckPackageIsFullAndNeedScanPackageLabel(workorder); + return SUCCESS(response); + } + catch (Exception ex) + { + return SUCCESS("检查是否要扫描箱标签功能异常:" + ex.Message); + } + + } + /// /// 结束工单,并生成质量报表 /// diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackendRecordLabelPrintController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackendRecordLabelPrintController.cs new file mode 100644 index 00000000..9323157b --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackendRecordLabelPrintController.cs @@ -0,0 +1,109 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Model.Dto; +using ZR.Model.Business; +using ZR.Service.Business.IBusinessService; +using ZR.Admin.WebApi.Extensions; +using ZR.Admin.WebApi.Filters; + +//创建时间:2025-05-22 +namespace ZR.Admin.WebApi.Controllers +{ + /// + /// 后道标签打印记录 + /// + [Verify] + [Route("/mes/qc/BackEnd/QcBackendRecordLabelPrint")] + public class QcBackendRecordLabelPrintController : BaseController + { + /// + /// 后道标签打印记录接口 + /// + private readonly IQcBackendRecordLabelPrintService _QcBackendRecordLabelPrintService; + + public QcBackendRecordLabelPrintController(IQcBackendRecordLabelPrintService QcBackendRecordLabelPrintService) + { + _QcBackendRecordLabelPrintService = QcBackendRecordLabelPrintService; + } + + /// + /// 查询后道标签打印记录列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "business:qcbackendrecordlabelprint:list")] + public IActionResult QueryQcBackendRecordLabelPrint([FromQuery] QcBackendRecordLabelPrintQueryDto parm) + { + var response = _QcBackendRecordLabelPrintService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询后道标签打印记录详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "business:qcbackendrecordlabelprint:query")] + public IActionResult GetQcBackendRecordLabelPrint(string Id) + { + var response = _QcBackendRecordLabelPrintService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加后道标签打印记录 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "business:qcbackendrecordlabelprint:add")] + [Log(Title = "后道标签打印记录", BusinessType = BusinessType.INSERT)] + public IActionResult AddQcBackendRecordLabelPrint([FromBody] QcBackendRecordLabelPrintDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _QcBackendRecordLabelPrintService.AddQcBackendRecordLabelPrint(modal); + + return SUCCESS(response); + } + + /// + /// 更新后道标签打印记录 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "business:qcbackendrecordlabelprint:edit")] + [Log(Title = "后道标签打印记录", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateQcBackendRecordLabelPrint([FromBody] QcBackendRecordLabelPrintDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _QcBackendRecordLabelPrintService.UpdateQcBackendRecordLabelPrint(modal); + + return ToResponse(response); + } + + /// + /// 删除后道标签打印记录 + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "business:qcbackendrecordlabelprint:delete")] + [Log(Title = "后道标签打印记录", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteQcBackendRecordLabelPrint(string ids) + { + int[] idsArr = Tools.SpitIntArrary(ids); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + + var response = _QcBackendRecordLabelPrintService.Delete(idsArr); + + return ToResponse(response); + } + + + + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-后道标签打印记录-0522151305.zip b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-后道标签打印记录-0522151305.zip new file mode 100644 index 0000000000000000000000000000000000000000..0900d63bd1f2f55c56f8e2175a48f506c5641dd6 GIT binary patch literal 9467 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 literal 0 HcmV?d00001 diff --git a/ZR.Model/MES/qc/DTO/backend/QcBackendRecordLabelPrintDto.cs b/ZR.Model/MES/qc/DTO/backend/QcBackendRecordLabelPrintDto.cs new file mode 100644 index 00000000..ca742805 --- /dev/null +++ b/ZR.Model/MES/qc/DTO/backend/QcBackendRecordLabelPrintDto.cs @@ -0,0 +1,54 @@ +using System.ComponentModel.DataAnnotations; + +namespace ZR.Model.Dto +{ + /// + /// 后道标签打印记录查询对象 + /// + public class QcBackendRecordLabelPrintQueryDto : PagerInfo + { + } + + /// + /// 后道标签打印记录输入输出对象 + /// + public class QcBackendRecordLabelPrintDto + { + [Required(ErrorMessage = "主键不能为空")] + public string Id { get; set; } + + public string MachineCode { get; set; } + + [Required(ErrorMessage = "标签编码不能为空")] + public string LabelCode { get; set; } + + public string WorkOrder { get; set; } + + public string PartNumber { get; set; } + + public string Description { get; set; } + + public string Team { get; set; } + + public string BatchCode { get; set; } + + public int? SerialNumber { get; set; } + + public int? PartNum { get; set; } + + public int? LabelType { get; set; } + + public int? BoxMaxNum { get; set; } + + public int? IsFull { get; set; } + + public int? IsLcl { get; set; } + + public string CreateBy { get; set; } + + public DateTime? CreateTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/ZR.Model/MES/qc/backend/QcBackendRecordLabelPrint.cs b/ZR.Model/MES/qc/backend/QcBackendRecordLabelPrint.cs new file mode 100644 index 00000000..c2007f25 --- /dev/null +++ b/ZR.Model/MES/qc/backend/QcBackendRecordLabelPrint.cs @@ -0,0 +1,105 @@ + +namespace ZR.Model.Business +{ + /// + /// 后道标签打印记录 + /// + [SugarTable("qc_backend_record_label_print")] + public class QcBackendRecordLabelPrint + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = false)] + public string Id { get; set; } + + /// + /// 设备编码 + /// + [SugarColumn(ColumnName = "machine_code")] + public string MachineCode { get; set; } + + /// + /// 标签编码 + /// + [SugarColumn(ColumnName = "label_code")] + public string LabelCode { get; set; } + + /// + /// 后道工单号 + /// + [SugarColumn(ColumnName = "work_order")] + public string WorkOrder { get; set; } + + /// + /// 零件号 + /// + [SugarColumn(ColumnName = "part_number")] + public string PartNumber { get; set; } + + /// + /// 描述 + /// + public string Description { get; set; } + + /// + /// 班组 + /// + public string Team { get; set; } + + /// + /// 批次号 + /// + [SugarColumn(ColumnName = "batch_code")] + public string BatchCode { get; set; } + + /// + /// 流水号 + /// + [SugarColumn(ColumnName = "serial_number")] + public int? SerialNumber { get; set; } + + /// + /// 零件数 + /// + [SugarColumn(ColumnName = "part_num")] + public int? PartNum { get; set; } + + /// + /// 标签类别 1-箱标签 2-产品标签 3-其他 + /// + [SugarColumn(ColumnName = "label_type")] + public int? LabelType { get; set; } + + /// + /// 箱最大容量 + /// + [SugarColumn(ColumnName = "box_max_num")] + public int? BoxMaxNum { get; set; } + + /// + /// 是否满箱 1-是 0-否 + /// + [SugarColumn(ColumnName = "is_full")] + public int? IsFull { get; set; } + + /// + /// 是否拼箱 1-是 0-否 + /// + [SugarColumn(ColumnName = "is_lcl")] + public int? IsLcl { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "create_by")] + public string CreateBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "create_time")] + public DateTime? CreateTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/qc/IService/backend/IQcBackEndService.cs b/ZR.Service/mes/qc/IService/backend/IQcBackEndService.cs index fa255fcd..d4018380 100644 --- a/ZR.Service/mes/qc/IService/backend/IQcBackEndService.cs +++ b/ZR.Service/mes/qc/IService/backend/IQcBackEndService.cs @@ -67,6 +67,18 @@ namespace ZR.Service.Business.IBusinessService /// string ScanInnerLabel(QcBackEndLabelScanDto data); + /// + /// 扫内标签后检查是否满箱并需要扫箱标签 + /// + /// + bool CheckPackageIsFullAndNeedScanPackageLabel(string workorder); + + /// + /// 触摸屏扫箱标签检验 + /// + /// + string ScanPackageLabel(QcBackEndLabelScanDto data); + /// /// 结束工单并生成质量报表 /// diff --git a/ZR.Service/mes/qc/IService/backend/IQcBackendRecordLabelPrintService.cs b/ZR.Service/mes/qc/IService/backend/IQcBackendRecordLabelPrintService.cs new file mode 100644 index 00000000..8be2d09d --- /dev/null +++ b/ZR.Service/mes/qc/IService/backend/IQcBackendRecordLabelPrintService.cs @@ -0,0 +1,23 @@ +using System; +using ZR.Model; +using ZR.Model.Dto; +using ZR.Model.Business; +using System.Collections.Generic; + +namespace ZR.Service.Business.IBusinessService +{ + /// + /// 后道标签打印记录service接口 + /// + public interface IQcBackendRecordLabelPrintService : IBaseService + { + PagedInfo GetList(QcBackendRecordLabelPrintQueryDto parm); + + QcBackendRecordLabelPrint GetInfo(string Id); + + QcBackendRecordLabelPrint AddQcBackendRecordLabelPrint(QcBackendRecordLabelPrint parm); + + int UpdateQcBackendRecordLabelPrint(QcBackendRecordLabelPrint parm); + + } +} diff --git a/ZR.Service/mes/qc/backend/QcBackEndService.cs b/ZR.Service/mes/qc/backend/QcBackEndService.cs index 3c92068e..75768f9d 100644 --- a/ZR.Service/mes/qc/backend/QcBackEndService.cs +++ b/ZR.Service/mes/qc/backend/QcBackEndService.cs @@ -74,7 +74,6 @@ namespace ZR.Service.Business RegexOptions.IgnoreCase ); - WmMaterial material = Context .Queryable() .Where(it => it.Partnumber == processedPartnumber) @@ -675,7 +674,75 @@ namespace ZR.Service.Business .ExecuteCommand(); return qcBackEndWorkorder; } - // 后道扫内标签与外标签 + + // 后道扫描箱标签 + public string ScanPackageLabel(QcBackEndLabelScanDto data) + { + try + { + Context.Ado.BeginTran(); + DateTime nowTime = DateTime.Now; + // 标签防错 (零件号) + string partNumber = DoAnalyzePartnumber(data.Label); + // 内外标签零件号不一致 + if (!partNumber.Contains(data.PartNumber)) + { + Context.Ado.RollbackTran(); + return "箱标签零件号与工单零件号不一致!"; + } + // 上一个内标签流水号检查 + int oldPackageLabelSort = 1; + QcBackEndRecordLabelScan lastPackagelabelInfo = Context + .Queryable() + .Where(it => it.WorkOrder == data.WorkOrder) + .Where(it => it.LabelType == 1) + .OrderByDescending(it => it.LabelSort) + .First(); + if(lastPackagelabelInfo == null) + { + oldPackageLabelSort = 0; + } + else + { + oldPackageLabelSort = lastPackagelabelInfo.LabelSort.Value; + } + // 新箱标签录入 + QcBackEndRecordLabelScan newLabelScran = + new() + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + WorkOrder = data.WorkOrder, + PartNumber = data.PartNumber, + Team = data.Team, + SiteNo = data.SiteNo, + ComNo = data.ComNo, + Label = data.Label, + LabelType = 1, + LabelSort = oldPackageLabelSort + 1, + ScanTime = $"{nowTime:yyyy-MM-dd HH:mm:ss}", + Type = "1", + Status = "1", + Remark = "外箱标签", + CreatedBy = data.CreatedBy, + CreatedTime = data.CreatedTime, + }; + int res = Context.Insertable(newLabelScran).ExecuteCommand(); + if (res == 0) + { + Context.Ado.RollbackTran(); + return "箱标签录入系统失败!"; + } + Context.Ado.CommitTran(); + return "ok"; + } + catch (Exception) + { + Context.Ado.RollbackTran(); + return "箱标签录入系统失败!"; + } + } + + // 后道扫内标签 public string ScanInnerLabel(QcBackEndLabelScanDto data) { try @@ -684,7 +751,7 @@ namespace ZR.Service.Business DateTime nowTime = DateTime.Now; // 标签防错 (内标签零件号) string partNumber = DoAnalyzePartnumber(data.Label); - // 内标签包含外标签 + // 内外标签零件号不一致 if (!partNumber.Contains(data.PartNumber)) { Context.Ado.RollbackTran(); @@ -732,41 +799,8 @@ namespace ZR.Service.Business { oldInnerLabelSort = labelScan.LabelSort ?? 0; } - - // 上一个箱标签流水号 - int oldPackageLabelSort = 0; - QcBackEndRecordLabelScan packageLabelScan = Context - .Queryable() - .Where(it => it.WorkOrder == data.WorkOrder) - .Where(it => it.LabelType == 1) - .OrderByDescending(it => it.LabelSort) - .First(); - if(packageLabelScan != null) - { - oldPackageLabelSort = packageLabelScan.LabelSort ?? 0; - } - // 内标签总数 - int innerLabelCount = Context.Queryable() - .Where(it => it.WorkOrder == data.WorkOrder) - .Where(it => it.LabelType == 2) - .Count(); - // 箱标签总数 - int packageLabelCount = Context.Queryable() - .Where(it => it.WorkOrder == data.WorkOrder) - .Where(it => it.LabelType == 1) - .Count(); - packageLabelCount -= 1; - if(packageLabelCount < 0) - { - packageLabelCount = 0; - } - // 新内标签流水号 int newInnerLabelSort = oldInnerLabelSort + 1; - // 新外标签流水号 - int newPackageLabelSort = oldPackageLabelSort + 1; - // 满箱数 - int maxPackage = packageLabelConfig.PackageNum ?? 0; // 新标签录入 QcBackEndRecordLabelScan newLabelScran = new() @@ -787,75 +821,13 @@ namespace ZR.Service.Business CreatedBy = data.CreatedBy, CreatedTime = data.CreatedTime, }; - - //20250516 TODO 判断下一次是否要扫满箱标签 - // XXX 满箱判断锁,预留 - bool IsCheckFullPackage = true; - - // 判断是否是扫的后道箱标签 - bool isPackageLabel = false; - string checkPackageLabelStr = "LabelType=1"; - if (data.Label.Contains(checkPackageLabelStr)) - { - isPackageLabel = true; - } - if (isPackageLabel) - { - bool hasAnyPackageLabel = Context - .Queryable() - .Where(it => it.Label == data.Label) - .Where(it => it.LabelType == 1) - .Any(); - if (hasAnyPackageLabel) - { - Context.Ado.RollbackTran(); - return "此箱标签已扫过,禁止重复扫码!"; - } - } - // 是否需要扫后道箱标签 - bool needScanPackageLabel = packageLabelCount * maxPackage < innerLabelCount; - // 扫描的是箱标签时 判断是否需要扫箱标签(是箱标签,需要扫,上一组内标签满了) - if (isPackageLabel && IsCheckFullPackage ) - { - // 需要扫并且内标签也满了,扫完录入 - if (oldInnerLabelSort >= maxPackage && oldInnerLabelSort % maxPackage == 0 && needScanPackageLabel) - { - newLabelScran.LabelType = 1; - newLabelScran.LabelSort = newPackageLabelSort; - newLabelScran.Remark = "扫描箱标签"; - - int res1 = Context.Insertable(newLabelScran).ExecuteCommand(); - if (res1 == 0) - { - Context.Ado.RollbackTran(); - return "箱标签录入系统失败!"; - } - Context.Ado.CommitTran(); - return "箱标签扫入成功!"; - } - else - { - Context.Ado.RollbackTran(); - return "未满箱,或已扫过箱标签,不需要再次扫箱标签!"; - } - } - // 扫描非箱标签,判断此时是否要扫外箱标签 - if (IsCheckFullPackage && newInnerLabelSort >= maxPackage && newInnerLabelSort % maxPackage == 1 && needScanPackageLabel) - { - Context.Ado.RollbackTran(); - return $"已满箱,请扫描箱标签!当前满箱判断数:{maxPackage}"; - } - // 已扫过则继续扫内箱标签 - //TODO 其他情况触发箱标签打印判定 - newLabelScran.LabelType = 2; - newLabelScran.LabelSort = newInnerLabelSort; - newLabelScran.Remark = ""; int res2 = Context.Insertable(newLabelScran).ExecuteCommand(); if (res2 == 0) { Context.Ado.RollbackTran(); return "产标签录入系统失败!"; } + // 检查是否需要打印箱标签 CheckAndPrintPackageLabel(newLabelScran, packageLabelConfig); Context.Ado.CommitTran(); @@ -868,11 +840,64 @@ namespace ZR.Service.Business } } + // 判断是否满箱并且要出箱标签 + public bool CheckPackageIsFullAndNeedScanPackageLabel(string workorder) + { + // 判断是否需要扫箱标签 + bool neeedScan = false; + // 工单判断 + QcBackEndServiceWorkorder workorderInfo = Context + .Queryable() + .Where(it => it.WorkOrder == workorder) + .First(); + if (workorder == null) + { + throw new Exception($"异常:工单不存在{workorder}"); + } + // 打印配置确认 + QcBackendBaseOutpackage packageLabelConfig = Context + .Queryable() + .Where(it => workorderInfo.Description.Contains(it.CheckStr)) + .First(); + if (packageLabelConfig == null) + { + throw new Exception($"异常:零件满箱配置不存在{workorder}"); + } + int maxPackageNum = packageLabelConfig.PackageNum ?? 0; + // 内标签总数 + int innerLabelCount = Context + .Queryable() + .Where(it => it.WorkOrder == workorder) + .Where(it => it.LabelType == 2) + .Count(); + // 箱标签总数 + int packageLabelCount = Context + .Queryable() + .Where(it => it.WorkOrder == workorder) + .Where(it => it.LabelType == 1) + .Count(); + + packageLabelCount -= 1; + if (packageLabelCount < 0) + { + packageLabelCount = 0; + } + // 是否满箱 + bool isFull = (innerLabelCount > 0) && (innerLabelCount % maxPackageNum == 0); + // 是否需要扫箱标签 + bool needScanPackageLabel = packageLabelCount * maxPackageNum < innerLabelCount; + neeedScan = isFull && needScanPackageLabel; + return neeedScan; + } + /// /// 判断是否需要自动出满箱标签 /// /// - public void CheckAndPrintPackageLabel(QcBackEndRecordLabelScan newLabelScran,QcBackendBaseOutpackage packageLabelConfig) + public void CheckAndPrintPackageLabel( + QcBackEndRecordLabelScan newLabelScran, + QcBackendBaseOutpackage packageLabelConfig + ) { DateTime nowTime = DateTime.Now; // 判断是否需要自动出满箱标签 @@ -883,53 +908,32 @@ namespace ZR.Service.Business // 需要打外箱标签 SendPrintPackageLabelAsync(newLabelScran, packageLabelConfig.FileUrl, maxPackage) .Wait(); - /*int packageSort = 0; - QcBackEndRecordLabelScan packagelabelScan = Context - .Queryable() - .Where(it => it.WorkOrder == newLabelScran.WorkOrder) - .Where(it => it.LabelType == 1) - .OrderByDescending(it => it.LabelSort) - .First(); - if (packagelabelScan != null) - { - packageSort = packagelabelScan.LabelSort ?? 0; - } - QcBackEndRecordLabelScan newPackagePrintLabel = - new() - { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - WorkOrder = newLabelScran.WorkOrder, - PartNumber = newLabelScran.PartNumber, - Team = newLabelScran.Team, - SiteNo = newLabelScran.SiteNo, - ComNo = newLabelScran.ComNo, - Label = - $"Code=BN{newLabelScran.WorkOrder}_{newLabelScran.Team}{packageSort + 1}^ItemNumber={newLabelScran.PartNumber}^Order={newLabelScran.WorkOrder}^Qty={maxPackage}^Type=packageLabel", - LabelType = 1, - LabelSort = packageSort + 1, - ScanTime = $"{nowTime:yyyy-MM-dd HH:mm:ss}", - Type = "1", - Status = "1", - Remark = "自动出满箱标签", - CreatedBy = newLabelScran.CreatedBy, - CreatedTime = newLabelScran.CreatedTime, - }; - int res = Context.Insertable(newPackagePrintLabel).ExecuteCommand();*/ } } /// - /// 发送打印后道外箱标签的mqtt信息 + /// 发送打印后道外箱标签的MQTT信息 /// + /// 当输入参数为null时抛出 + /// 当标签内容无效时抛出 public async Task SendPrintPackageLabelAsync( QcBackEndRecordLabelScan newLabelScran, string path, int maxPackage ) { + // 参数验证 + if (newLabelScran == null) + throw new ArgumentNullException(nameof(newLabelScran), "标签扫描信息不能为空"); + + if (string.IsNullOrWhiteSpace(newLabelScran.Label)) + throw new ArgumentException("标签内容不能为空", nameof(newLabelScran.Label)); + + if (maxPackage <= 0) + throw new ArgumentException("包装数量必须大于0", nameof(maxPackage)); + try { - // 构造主题和消息内容 (发送给1站点打印 XXX 预留多站点打印的情况) string topic = $"shgg_mes/backEnd/print/1站点"; QcBackEndPrintMqttEventDto mqttEventDto = CreateNewQcBackEndPrintMqttEventDto( @@ -937,23 +941,100 @@ namespace ZR.Service.Business path, maxPackage ); + var payload = JsonSerializer.Serialize(mqttEventDto); - // 调用MqttService的发布方法(支持异步调用) + // 保持原有PublishAsync调用方式 await _mqttService.PublishAsync( topic, payload, MqttQualityOfServiceLevel.AtLeastOnce, - // 可选:设置消息保留 retain: false ); _logger.LogInformation($"发送后道外箱标签打印成功:{topic}"); + + // 添加打印记录 + await AddBackendLabelPrintRecordAsync(newLabelScran,mqttEventDto, maxPackage); + } + catch (JsonException ex) + { + _logger.LogError(ex, "序列化MQTT消息失败"); + throw new InvalidOperationException("MQTT消息格式错误", ex); } catch (Exception ex) { _logger.LogError(ex, $"发送后道外箱标签打印失败:{ex.Message}"); - throw; // 或根据业务需求处理异常 + throw; + } + } + + /// + /// 异步添加后道箱标签打印记录 + /// + private async Task AddBackendLabelPrintRecordAsync( + QcBackEndRecordLabelScan newLabelScran, + QcBackEndPrintMqttEventDto labelScan, + int maxPackage + ) + { + try + { + string labelCode = labelScan.LabelCode ?? ""; + string description = ""; + string batchCode = ""; + try + { + batchCode = DoAnalyzeBatchCode(labelCode); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "解析批次号失败"); + } + // 上一个内标签流水号检查 + int oldPackageLabelSort = 1; + QcBackendRecordLabelPrint lastPackagelabelInfo = Context + .Queryable() + .Where(it => it.WorkOrder == newLabelScran.WorkOrder) + .Where(it => it.LabelType == 1) + .OrderByDescending(it => it.SerialNumber) + .First(); + if (lastPackagelabelInfo == null) + { + oldPackageLabelSort = 1; + } + else + { + oldPackageLabelSort = lastPackagelabelInfo.SerialNumber.Value; + } + QcBackendRecordLabelPrint printRecord = + new() + { + Id = SnowFlakeSingle.instance.NextId().ToString(), + MachineCode = labelScan.SiteNo ?? "未知站点", + LabelCode = labelCode, + WorkOrder = newLabelScran.WorkOrder ?? "未知工单", + PartNumber = labelScan.PartNumber ?? "未知零件号", + Description = description, + Team = labelScan.Team ?? "未知班组", + BatchCode = batchCode, + SerialNumber = oldPackageLabelSort + 1, + PartNum = maxPackage, + LabelType = 1, + BoxMaxNum = maxPackage, + IsFull = 1, + IsLcl = 0, + CreateBy = "后道标签打印系统", + CreateTime = DateTime.Now + }; + + // 使用异步数据库操作 + await Context.Insertable(printRecord).ExecuteCommandAsync(); + } + catch (Exception ex) + { + _logger.LogError(ex, "添加打印记录失败"); + throw new Exception("保存打印记录失败", ex); } } @@ -977,16 +1058,16 @@ namespace ZR.Service.Business } // 提取箱流水号 int packageSort = 0; - QcBackEndRecordLabelScan packagelabelScan = Context - .Queryable() + QcBackendRecordLabelPrint labelPrintRecord = Context + .Queryable() .Where(it => it.PartNumber == newLabelScran.PartNumber) - .Where(it => it.Label.Contains(batchCode)) + .Where(it => it.BatchCode.Contains(batchCode)) .Where(it => it.LabelType == 1) - .OrderByDescending(it => it.LabelSort) + .OrderByDescending(it => it.SerialNumber) .First(); - if (packagelabelScan != null) + if (labelPrintRecord != null) { - packageSort = packagelabelScan.LabelSort + 1 ?? 0; + packageSort = labelPrintRecord.SerialNumber + 1 ?? 0; } // 提取产品描述 string checkPartnumber = newLabelScran.PartNumber; @@ -1003,7 +1084,7 @@ namespace ZR.Service.Business .Where(it => it.Type == 1) .Where(it => it.Status == 1) .First(); - if(material == null) + if (material == null) { throw new Exception("生成打印后道外箱标签的信息:此零件号不在物料清单内!" + processedPartnumber); } @@ -1026,7 +1107,7 @@ namespace ZR.Service.Business PackageCode = newPackageCode, Team = newLabelScran.Team, Sort = packageSort, - ProductionTime = "20" + batchCode.Substring(0,6), + ProductionTime = "20" + batchCode.Substring(0, 6), BatchCode = batchCode, PackageNum = maxPackage, LabelCode = newLabelCode, @@ -1291,5 +1372,6 @@ namespace ZR.Service.Business { return Guid.NewGuid().ToString("N").Substring(0, 10); // Generate a 10-character unique ID } + } } diff --git a/ZR.Service/mes/qc/backend/QcBackendRecordLabelPrintService.cs b/ZR.Service/mes/qc/backend/QcBackendRecordLabelPrintService.cs new file mode 100644 index 00000000..483ddbb0 --- /dev/null +++ b/ZR.Service/mes/qc/backend/QcBackendRecordLabelPrintService.cs @@ -0,0 +1,89 @@ +using System; +using SqlSugar; +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using ZR.Model; +using ZR.Model.Dto; +using ZR.Model.Business; +using ZR.Repository; +using ZR.Service.Business.IBusinessService; +using System.Linq; + +namespace ZR.Service.Business +{ + /// + /// 后道标签打印记录Service业务层处理 + /// + [AppService(ServiceType = typeof(IQcBackendRecordLabelPrintService), ServiceLifetime = LifeTime.Transient)] + public class QcBackendRecordLabelPrintService : BaseService, IQcBackendRecordLabelPrintService + { + /// + /// 查询后道标签打印记录列表 + /// + /// + /// + public PagedInfo GetList(QcBackendRecordLabelPrintQueryDto parm) + { + var predicate = Expressionable.Create(); + + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public QcBackendRecordLabelPrint GetInfo(string Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加后道标签打印记录 + /// + /// + /// + public QcBackendRecordLabelPrint AddQcBackendRecordLabelPrint(QcBackendRecordLabelPrint model) + { + return Context.Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改后道标签打印记录 + /// + /// + /// + public int UpdateQcBackendRecordLabelPrint(QcBackendRecordLabelPrint model) + { + //var response = Update(w => w.Id == model.Id, it => new QcBackendRecordLabelPrint() + //{ + // MachineCode = model.MachineCode, + // LabelCode = model.LabelCode, + // WorkOrder = model.WorkOrder, + // PartNumber = model.PartNumber, + // Description = model.Description, + // Team = model.Team, + // BatchCode = model.BatchCode, + // SerialNumber = model.SerialNumber, + // PartNum = model.PartNum, + // LabelType = model.LabelType, + // BoxMaxNum = model.BoxMaxNum, + // IsFull = model.IsFull, + // IsLcl = model.IsLcl, + //}); + //return response; + return Update(model, true); + } + + } +} \ No newline at end of file