From af0d99c9e7976d2af1f3a1589e0d9e45e97fd41a Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Wed, 13 May 2026 11:09:09 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=92=8C=E6=8F=90=E4=BA=A4=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/QmsIssueTicketControllerService.java | 4 ++-- .../QmsIssueTicketProcessMeasureControllerService.java | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 70b285b1..ebee5439 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -1475,8 +1475,8 @@ public class QmsIssueTicketControllerService { List permanentMeasures = new ArrayList<>(); // 查询字典项:临时措施和永久措施的类型ID - Long temporaryTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures"); - Long permanentTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures"); + Long temporaryTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施"); + Long permanentTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施"); for (QmsIssueTicketProcess process : processes) { // 提取根本原因 diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java index f0cb5920..c0b5076e 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java @@ -192,7 +192,10 @@ public class QmsIssueTicketProcessMeasureControllerService { // 保存临时措施 if (CollectionUtil.isNotEmpty(temporaryMeasures)) { - Long tempTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures"); + Long tempTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施"); + if (tempTypeId == null) { + throw new NflgException(STATE.BusinessError, "字典【工单解决措施-临时纠正措施】不存在"); + } for (QmsIssueTicketProcessDraftQO.MeasureItem item : temporaryMeasures) { if (StrUtil.isBlank(item.getMeasureContent())) continue; QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() @@ -209,7 +212,10 @@ public class QmsIssueTicketProcessMeasureControllerService { // 保存永久措施 if (CollectionUtil.isNotEmpty(permanentMeasures)) { - Long permTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures"); + Long permTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施"); + if (permTypeId == null) { + throw new NflgException(STATE.BusinessError, "字典【工单解决措施-永久纠正措施】不存在"); + } for (QmsIssueTicketProcessDraftQO.MeasureItem item : permanentMeasures) { if (StrUtil.isBlank(item.getMeasureContent())) continue; QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() From 5e27b53712b33c3c0608c21e2609f0300bfa9629 Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Wed, 13 May 2026 11:27:47 +0800 Subject: [PATCH 2/4] =?UTF-8?q?pdi=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 8504c33f..bfbff16a 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -1658,6 +1658,49 @@ public class QmsIssueTicketControllerService { vo.setTemporaryMeasures(temporaryMeasures); vo.setPermanentMeasures(permanentMeasures); + // 填充处理记录列表(含处理人信息) + List processVOs = new ArrayList<>(); + for (QmsIssueTicketProcess process : processes) { + QmsPdiTicketMyDetailVO.ProcessVO pvo = new QmsPdiTicketMyDetailVO.ProcessVO(); + pvo.setId(process.getId()); + pvo.setHandlerUserId(process.getHandlerUserId()); + pvo.setHandlerUserName(process.getHandlerUserName()); + pvo.setRootCause(process.getRootCause()); + pvo.setTaskResultIds(process.getTaskResultIds()); + pvo.setApprovalStatus(process.getApprovalStatus()); + pvo.setApprovalOpinion(process.getApprovalOpinion()); + pvo.setApprovalUserId(process.getApprovalUserId()); + pvo.setApprovalUserName(process.getApprovalUserName()); + pvo.setApprovalTime(process.getApprovalTime()); + pvo.setProcessTime(process.getApprovalTime()); + pvo.setLeaderApprovalResult(process.getLeaderApprovalResult()); + pvo.setLeaderApprovalOpinion(process.getLeaderApprovalOpinion()); + pvo.setLeaderUserId(process.getLeaderUserId()); + pvo.setLeaderUserName(process.getLeaderUserName()); + pvo.setLeaderApprovalTime(process.getLeaderApprovalTime()); + + // 查询该处理记录的措施列表 + List processMeasures = issueTicketProcessMeasureService.lambdaQuery() + .eq(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, process.getId()) + .list(); + List measureVOs = new ArrayList<>(); + for (QmsIssueTicketProcessMeasure m : processMeasures) { + QmsPdiTicketMyDetailVO.MeasureVO mvo = new QmsPdiTicketMyDetailVO.MeasureVO(); + mvo.setId(m.getId()); + mvo.setMeasureTypeId(m.getMeasureTypeId()); + mvo.setMeasureContent(m.getMeasureContent()); + mvo.setChargeUser(m.getChargeUser()); + mvo.setPlanDate(m.getPlanDate()); + mvo.setConfirmDate(m.getConfirmDate()); + mvo.setRemark(m.getRemark()); + measureVOs.add(mvo); + } + pvo.setMeasures(measureVOs); + + processVOs.add(pvo); + } + vo.setProcesses(processVOs); + // 构建相关人员签字(按部门,只返回已审批的) Map signatures = buildSignatures(processes); vo.setSignatures(signatures); From a02aa47b2dfbff44b86a6ffe9d5869cca4ebeb92 Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Wed, 13 May 2026 11:45:23 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qms/admin/service/QmsIssueTicketControllerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index bfbff16a..aef45f4c 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -2016,8 +2016,8 @@ public class QmsIssueTicketControllerService { } // 查询纠正措施 - Long temporaryTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures"); - Long permanentTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures"); + Long temporaryTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施"); + Long permanentTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施"); List temporaryMeasures = new ArrayList<>(); List permanentMeasures = new ArrayList<>(); From e3198da5573c33c851bce983e511997414b398e5 Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Wed, 13 May 2026 14:15:03 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index aef45f4c..0862e2ac 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -2064,11 +2064,29 @@ public class QmsIssueTicketControllerService { .eq(QmsIssueTicketProcess::getIssueTicketId, id) .list(); + // 判断是否为领导:1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人 + boolean isLeader = allProcesses.stream() + .anyMatch(p -> currentUserId.equals(p.getLeaderUserId())); + if (!isLeader) { + // 检查当前用户是否为任一处理人的部门负责人 + for (QmsIssueTicketProcess p : allProcesses) { + if (p.getHandlerUserId() == null) continue; + UserInterior handlerInterior = userInteriorService.lambdaQuery() + .eq(UserInterior::getUserId, p.getHandlerUserId()) + .one(); + if (handlerInterior != null && handlerInterior.getDeptId() != null) { + Department dept = departmentService.getById(handlerInterior.getDeptId()); + if (dept != null && currentUserId.equals(dept.getHeadUserId())) { + isLeader = true; + break; + } + } + } + } + // isEdit:处理人或领导为true boolean isHandler = allProcesses.stream() .anyMatch(p -> currentUserId.equals(p.getHandlerUserId())); - boolean isLeader = allProcesses.stream() - .anyMatch(p -> currentUserId.equals(p.getLeaderUserId())); vo.setIsEdit(isHandler || isLeader); Short status = ticket.getStatus(); @@ -2080,7 +2098,7 @@ public class QmsIssueTicketControllerService { // 工单表审批人:isReview=false,isDispatch在处理中到已完成之间 vo.setIsReview(false); vo.setIsDispatch(status != null && status == 1); - } else if (allProcesses.stream().anyMatch(p -> currentUserId.equals(p.getLeaderUserId()))) { + } else if (isLeader) { // 上级领导:isReview=true,isDispatch=false vo.setIsReview(true); vo.setIsDispatch(false);