From 29abe10590ce04cc29c3f37b833a5587c0282452 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 10 Nov 2026 11:00:46 +0800 Subject: [PATCH] =?UTF-8?q?2026-11-10=20FQC=E5=A2=9E=E5=8A=A0=E3=80=90?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=94=BE=E8=A1=8C=E3=80=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/pms/data/QcFAIRecordData.java | 10 +++++ .../com/heai/modules/pms/mapper/QcMapper.java | 4 ++ .../pms/service/Impl/QcServiceImpl.java | 40 ++++++++++++++++--- src/main/resources/application-dev.yml | 2 +- src/main/resources/mapper/pms/QcMapper.xml | 28 ++++++++++++- 5 files changed, 77 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java b/src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java index c947da1..6282d03 100644 --- a/src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java +++ b/src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java @@ -158,6 +158,16 @@ public class QcFAIRecordData extends QueryPage { private String itemResult; // 主记录提交标识 private String submitFlag; + /** FQC临时放行标识,Y/N,对应 qc_fqc_record.release_flag */ + private String releaseFlag; + /** FQC放行时间,对应 qc_fqc_record.release_time */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date releaseTime; + /** FQC放行人账号,对应 qc_fqc_record.release_by */ + private String releaseBy; + /** FQC放行人姓名 */ + private String releaseByName; // 明细记录提交标识 private String isSubmit; // 默认抽样数 diff --git a/src/main/java/com/heai/modules/pms/mapper/QcMapper.java b/src/main/java/com/heai/modules/pms/mapper/QcMapper.java index 37b07d3..50f5cd4 100644 --- a/src/main/java/com/heai/modules/pms/mapper/QcMapper.java +++ b/src/main/java/com/heai/modules/pms/mapper/QcMapper.java @@ -529,6 +529,10 @@ public interface QcMapper { void updateFQCMasterRecord(QcFAIRecordData data); + QcFAIRecordData selectFQCReleaseState(QcFAIRecordData data); + + void updateFQCStateOnly(QcFAIRecordData data); + void updateFQCDetailedRecord(QcFAIRecordData data); void updateFQCMasterSubmitFlag(QcFAIRecordData qcData); diff --git a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java index 5341748..6f866a1 100644 --- a/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java @@ -3588,6 +3588,10 @@ public class QcServiceImpl implements QcService { if ("已完成".equals(qcData.getState())) { throw new RuntimeException("检验单已完成,不允许删除!"); } + QcFAIRecordData current = qcMapper.selectFQCReleaseState(qcData); + if (current != null && "Y".equalsIgnoreCase(StringUtils.trimToEmpty(current.getReleaseFlag()))) { + throw new RuntimeException("检验单已临时放行,不允许删除,请先取消审核 {" + qcData.getInspectionNo() + "} !"); + } // 删除检验记录 qcMapper.deleteFQCRecord(qcData); // 删除明细记录信息 @@ -3608,9 +3612,24 @@ public class QcServiceImpl implements QcService { @Transactional public void saveFQCDetailedRecord(QcFAIRecordData data) { SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); - if ("1".equals(data.getType())) { // 应用 + boolean tempRelease = "3".equals(data.getType()); + if ("1".equals(data.getType())) { // 分批保存 data.setState("待检验"); - } else { // 保存 + } else if (tempRelease) { // 临时放行:保存结果并调接口,不改状态 + QcFAIRecordData current = qcMapper.selectFQCReleaseState(data); + if (current == null) { + throw new RuntimeException("检验单不存在,请刷新后重试!"); + } + data.setState(current.getState()); + data.setReleaseFlag("Y"); + data.setReleaseBy(user != null && StringUtils.isNotBlank(user.getUsername()) ? user.getUsername() : ""); + } else { // 最终检验完成 + QcFAIRecordData current = qcMapper.selectFQCReleaseState(data); + if (current != null && "Y".equalsIgnoreCase(StringUtils.trimToEmpty(current.getReleaseFlag()))) { + data.setState("待审核"); + qcMapper.updateFQCStateOnly(data); + return; + } data.setState("待审核"); } qcMapper.updateFQCMasterRecord(data); @@ -3650,10 +3669,21 @@ public class QcServiceImpl implements QcService { if (!operators.isEmpty()) { qcMapper.saveOperator(operators); } - if(StringUtils.isNotBlank(data.getRefInfo1()) && StringUtils.isNotBlank(data.getRefInfo2())){ - inspectService.inspectForQMS(data.getSite(),data.getRefInfo1(),Integer.parseInt(data.getRefInfo2()),"submit",data.getInspectionResult(),data.getInspectionRemark(),user.getUsername()); + String refInfo1 = data.getRefInfo1(); + String refInfo2 = data.getRefInfo2(); + if (tempRelease && (StringUtils.isBlank(refInfo1) || StringUtils.isBlank(refInfo2))) { + QcFAIRecordData stored = qcMapper.selectFQCRecordForAutoSubmit(data); + if (stored != null) { + refInfo1 = stored.getRefInfo1(); + refInfo2 = stored.getRefInfo2(); + } + } + if(StringUtils.isNotBlank(refInfo1) && StringUtils.isNotBlank(refInfo2)){ + inspectService.inspectForQMS(data.getSite(),refInfo1,Integer.parseInt(refInfo2),"submit",data.getInspectionResult(),data.getInspectionRemark(),user.getUsername()); + } + if (!tempRelease) { + tryAutoSubmitAfterFinalInspection(data, InspectionSubmitType.FQC); } - tryAutoSubmitAfterFinalInspection(data, InspectionSubmitType.FQC); // // 新增数据采集信息 // if (!data.getSubDetailList().isEmpty()) { // qcMapper.saveFQCSubDetailed(data.getSubDetailList()); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 00c7180..39af68c 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -56,4 +56,4 @@ spring: # PDA 登录页 / 首页标题 pda: - title: 赫艾-PDA \ No newline at end of file + title:MES-PDA \ No newline at end of file diff --git a/src/main/resources/mapper/pms/QcMapper.xml b/src/main/resources/mapper/pms/QcMapper.xml index 82b0263..8026b0c 100644 --- a/src/main/resources/mapper/pms/QcMapper.xml +++ b/src/main/resources/mapper/pms/QcMapper.xml @@ -4232,10 +4232,14 @@ a.ref_info2, a.ref_info3, a.ref_info4, - a.ref_info5 + a.ref_info5, + isnull(a.release_flag, 'N') as releaseFlag, + a.release_time as releaseTime, + isnull(ru.user_display, a.release_by) as releaseByName FROM qc_fqc_record as a left join part as d on a.site = d.site and a.bu_no = d.sourceBu and a.part_no = d.partNo left join sys_user as u on a.inspector_no = u.username + left join sys_user as ru on a.release_by = ru.username left join resource as r on a.site = r.site and a.resource_id = r.resource_id and a.work_center_no = r.work_center_no left join UM as um on a.site = um.site and a.um_id = um.UMID @@ -4419,6 +4423,25 @@ not_pass_qty = #{notPassQty,jdbcType=DECIMAL}, batch_qualified_qty = #{batchQualifiedQty,jdbcType=DECIMAL}, submit_date = getDate() + + , release_flag = #{releaseFlag} + + + , release_time = getDate() + , release_by = #{releaseBy} + + WHERE site = #{site} and inspection_no = #{inspectionNo} and bu_no = #{buNo} + + + + + + UPDATE qc_fqc_record + SET state = #{state} WHERE site = #{site} and inspection_no = #{inspectionNo} and bu_no = #{buNo} @@ -5794,6 +5817,9 @@ UPDATE qc_fqc_record SET submit_flag = 'N', state = '待检验', + release_flag = 'N', + release_time = null, + release_by = null, cancel_check_by = #{updateBy}, cancel_check_date = getDate() WHERE inspection_no = #{inspectionNo} and site = #{site} and bu_no = #{buNo}