From a5957c665163a9ada093139b6e48c97fcaa703c5 Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Thu, 14 May 2026 11:36:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=80=E6=A8=A1=E9=87=87=E9=9B=86=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xujie/sys/common/utils/ModbusUtils.java | 1 + .../sys/modules/pms/mapper/DmMapper.java | 13 ++++-- .../pms/service/Impl/DmFaiServiceImpl.java | 22 +++++++-- .../pms/service/Impl/DmServiceImpl.java | 8 +++- src/main/resources/mapper/pms/DmMapper.xml | 46 +++++++++++++++++-- 5 files changed, 74 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/xujie/sys/common/utils/ModbusUtils.java b/src/main/java/com/xujie/sys/common/utils/ModbusUtils.java index b573c5c8..8c3ec313 100644 --- a/src/main/java/com/xujie/sys/common/utils/ModbusUtils.java +++ b/src/main/java/com/xujie/sys/common/utils/ModbusUtils.java @@ -35,6 +35,7 @@ public class ModbusUtils { } catch (Exception e) { log.error("读取单个寄存器失败 - IP: {}, Port: {}, Ref: {}, Error: {}", ip, port, ref, e.getMessage()); + throw new RuntimeException("请重试,连接寄存器失败:"+e); } finally { try { master.disconnect(); diff --git a/src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java b/src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java index dcb14da6..c8ab982a 100644 --- a/src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java +++ b/src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java @@ -134,15 +134,20 @@ public interface DmMapper { List selectDmTemplateForRecord(QcFAIRecordData data); /** - * 通过 site+bu+templateId 判断是否存在覆盖项目 + * 通过 site+bu+templateId+attribute_no(物料/族编码) 判断是否存在 dm_attribute_template_item 覆盖项目 */ int countDmAttributeTemplateItemForTemplate(QcFAIRecordData data); /** - * 优先使用 dm_attribute_template_item 的标准值,组装成巡检明细所需字段 + * 优先使用 dm_attribute_template_item 的标准值,组装成巡检明细所需字段(按 attribute_no 限定物料) */ List selectDmTemplateDetailForRecordByTemplateItem(QcFAIRecordData data); + /** + * DM FAI:按物料(partNo) + 模板在 dm_attribute_template 取头信息 + */ + List selectDmAttributeTemplateForFai(QcFAIRecordData data); + /** * 自动生成 DM FAI:根据“来源模板templateId + inspectionTypeNo(823) + attributeNo + attributeType” * 找到对应的 FAI 模板(返回 template_id,若多条取第一条)。 @@ -157,14 +162,14 @@ public interface DmMapper { List selectDmToolAttributeByOperationAndResource(@Param("site") String site, @Param("buNo") String buNo, @Param("partNo") String partNo, @Param("attributeType1") String attributeType1, @Param("inspectionTypeNo") String inspectionTypeNo, @Param("operationDesc") String operationDesc, - @Param("resourceId") String resourceId); + @Param("resourceId") String resourceId, @Param("templateId") String templateId); String selectDmToolFamilyId(@Param("site") String site, @Param("partNo") String partNo); List selectDmFamilyAttributeByOperationAndResource(@Param("site") String site, @Param("buNo") String buNo, @Param("familyId") String familyId, @Param("attributeType2") String attributeType2, @Param("inspectionTypeNo") String inspectionTypeNo, @Param("operationDesc") String operationDesc, - @Param("resourceId") String resourceId); + @Param("resourceId") String resourceId, @Param("templateId") String templateId); void actionDMInspection(EamObjectInData data); diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java index 5d9e4d27..fb92a891 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java @@ -201,24 +201,32 @@ public class DmFaiServiceImpl implements DmFaiService { controlModel.setControlNo("10004"); List controlList = qcMapper.queryController(controlModel); if (controlList != null && !controlList.isEmpty() && "控制".equals(controlList.get(0).getBaseData())) { - partAttribute = dmMapper.selectDmTemplateForRecord(data); - if (partAttribute == null || partAttribute.isEmpty()) { - throw new RuntimeException("未找到检验模板,请检查模板是否在 dm_template 中维护!"); + if (StringUtils.isNotBlank(data.getPartNo()) && StringUtils.isNotBlank(data.getTemplateId())) { + partAttribute = dmMapper.selectDmAttributeTemplateForFai(data); + if (partAttribute == null || partAttribute.isEmpty()) { + throw new RuntimeException("未找到刀模属性检验模板映射,请检查 dm_attribute_template 是否维护该物料与模板(检验类型 823)!"); + } + } else { + partAttribute = dmMapper.selectDmTemplateForRecord(data); + if (partAttribute == null || partAttribute.isEmpty()) { + throw new RuntimeException("未找到检验模板,请检查模板是否在 dm_template 中维护!"); + } } applyTemplateToDmFaiRecord(partAttribute.get(0), data); } else { String partNo = data.getPartNo(); String operationDesc = StringUtils.defaultString(data.getOperationDesc()); String resourceId = StringUtils.defaultString(data.getResourceId()); + String filterTemplateId = StringUtils.isNotBlank(data.getTemplateId()) ? data.getTemplateId() : null; partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource( - data.getSite(), data.getBuNo(), partNo, "A", "106", operationDesc, resourceId); + data.getSite(), data.getBuNo(), partNo, "A", "823", operationDesc, resourceId, filterTemplateId); if (partAttribute != null && !partAttribute.isEmpty()) { applyTemplateToDmFaiRecord(partAttribute.get(0), data); } else { String familyId = dmMapper.selectDmToolFamilyId(data.getSite(), partNo); if (StringUtils.isNotBlank(familyId)) { List familyAttribute = dmMapper.selectDmFamilyAttributeByOperationAndResource( - data.getSite(), data.getBuNo(), familyId, "B", "106", operationDesc, resourceId); + data.getSite(), data.getBuNo(), familyId, "B", "823", operationDesc, resourceId, filterTemplateId); if (familyAttribute != null && !familyAttribute.isEmpty()) { applyTemplateToDmFaiRecord(familyAttribute.get(0), data); } @@ -276,6 +284,10 @@ public class DmFaiServiceImpl implements DmFaiService { templateKey.setSite(data.getSite()); templateKey.setBuNo(data.getBuNo()); templateKey.setTemplateId(firstPart.getTemplateId()); + String attributeNoForItems = StringUtils.isNotBlank(firstPart.getAttributeNo()) + ? firstPart.getAttributeNo() + : (StringUtils.isNotBlank(data.getAttributeNo()) ? data.getAttributeNo() : data.getPartNo()); + templateKey.setAttributeNo(attributeNoForItems); int overrideCount = dmMapper.countDmAttributeTemplateItemForTemplate(templateKey); if (overrideCount > 0) { itemList = dmMapper.selectDmTemplateDetailForRecordByTemplateItem(templateKey); diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java index bc636de6..05aa8df9 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java @@ -448,14 +448,14 @@ public class DmServiceImpl implements DmService { String partNo = data.getPartNo(); String operationDesc = StringUtils.defaultString(data.getOperationDesc()); String resourceId = StringUtils.defaultString(data.getResourceId()); - partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource(data.getSite(), data.getBuNo(), partNo, "A", "822", operationDesc, resourceId); + partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource(data.getSite(), data.getBuNo(), partNo, "A", "822", operationDesc, resourceId, null); if (partAttribute != null && !partAttribute.isEmpty()) { applyTemplateToDmIpqcRecord(partAttribute.get(0), data); } else { String familyId = dmMapper.selectDmToolFamilyId(data.getSite(), partNo); if (StringUtils.isNotBlank(familyId)) { List familyAttribute = dmMapper.selectDmFamilyAttributeByOperationAndResource( - data.getSite(), data.getBuNo(), familyId, "B", "822", operationDesc, resourceId); + data.getSite(), data.getBuNo(), familyId, "B", "822", operationDesc, resourceId, null); if (familyAttribute != null && !familyAttribute.isEmpty()) { applyTemplateToDmIpqcRecord(familyAttribute.get(0), data); } @@ -529,6 +529,10 @@ public class DmServiceImpl implements DmService { templateKey.setSite(data.getSite()); templateKey.setBuNo(data.getBuNo()); templateKey.setTemplateId(firstPart.getTemplateId()); + String attributeNoForItems = StringUtils.isNotBlank(firstPart.getAttributeNo()) + ? firstPart.getAttributeNo() + : (StringUtils.isNotBlank(data.getAttributeNo()) ? data.getAttributeNo() : data.getPartNo()); + templateKey.setAttributeNo(attributeNoForItems); int overrideCount = dmMapper.countDmAttributeTemplateItemForTemplate(templateKey); if (overrideCount > 0) { itemList = dmMapper.selectDmTemplateDetailForRecordByTemplateItem(templateKey); diff --git a/src/main/resources/mapper/pms/DmMapper.xml b/src/main/resources/mapper/pms/DmMapper.xml index b56b688a..ac893835 100644 --- a/src/main/resources/mapper/pms/DmMapper.xml +++ b/src/main/resources/mapper/pms/DmMapper.xml @@ -426,6 +426,7 @@ select count(1) from dm_attribute_template_item where site = #{site} and bu_no = #{buNo} and template_id = #{templateId} + and attribute_no = #{attributeNo} + + +