From e10fb0bf1f10db666affc4819d8262ff15ac9471 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Sun, 14 Jun 2026 15:33:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E4=BB=BB=E5=8A=A1=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/QmsIssueTicketControllerService.java | 15 +++------------ .../QmsIssueTicketProcessControllerService.java | 10 ++++++++-- ...ssueTicketProcessMeasureControllerService.java | 14 ++++++++++++-- .../pojo/qo/QmsIssueTicketProcessDraftQO.java | 5 +++++ .../pojo/vo/QmsInspectionTicketDetailVO.java | 5 +++++ .../service/impl/QmsIssueTicketServiceImpl.java | 11 +++++++++++ 6 files changed, 44 insertions(+), 16 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 f80161aa..b2e6221f 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 @@ -3082,6 +3082,7 @@ public class QmsIssueTicketControllerService { for (QmsIssueTicketProcessMeasure measure : measures) { QmsInspectionTicketDetailVO.MeasureVO measureVO = new QmsInspectionTicketDetailVO.MeasureVO(); + measureVO.setId(measure.getId()); measureVO.setMeasureTypeId(measure.getMeasureTypeId()); measureVO.setMeasureContent(measure.getMeasureContent()); measureVO.setChargeUser(measure.getChargeUser()); @@ -3155,21 +3156,11 @@ public class QmsIssueTicketControllerService { vo.setIsEdit(false); vo.setIsShut(false); } - // 处理人权限:拿到工单时有编辑和审批权限,有了审批状态后失去审批权限,驳回时失去编辑权限 + // 处理人权限:未提交或领导驳回重置后可编辑,处理人提交后关闭编辑权限 else if (isHandler) { Short handlerApprovalStatus = myProcess.getApprovalStatus(); vo.setIsReview(handlerApprovalStatus == null); - if (handlerApprovalStatus != null && handlerApprovalStatus == 1) { - // 驳回:失去编辑权限 - vo.setIsEdit(false); - } else if (handlerApprovalStatus != null && handlerApprovalStatus == 0) { - // 通过:按之前逻辑(领导未审批时可编辑) - boolean leaderNotApproved = myProcess.getLeaderApprovalResult() == null; - vo.setIsEdit(leaderNotApproved); - } else { - // 未提交:有编辑权限 - vo.setIsEdit(true); - } + vo.setIsEdit(handlerApprovalStatus == null); vo.setIsDispatch(false); vo.setIsShut(false); } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java index 87e7c43a..9f40e96e 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java @@ -211,6 +211,8 @@ public class QmsIssueTicketProcessControllerService { .set(QmsIssueTicketProcess::getApprovalTime, now) .update(); + issueTicketToDoService.processed(ticket.getId()); + // 根据审批状态推送待办 if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) { // 驳回:推送待办给负责人(工单表的 approvalUserId) @@ -283,6 +285,8 @@ public class QmsIssueTicketProcessControllerService { .set(QmsIssueTicketProcess::getLeaderApprovalTime, now) .update(); + issueTicketToDoService.processed(ticket.getId()); + Short leaderApprovalResult = request.getApprovalStatus(); if (leaderApprovalResult == 1) { @@ -383,6 +387,8 @@ public class QmsIssueTicketProcessControllerService { .set(QmsIssueTicketProcess::getLeaderApprovalTime, null) .update(); + issueTicketToDoService.processed(ticket.getId()); + // 4. 根据审批状态推送待办 Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "RejectedPDIDefectiveProductHandling"); @@ -417,8 +423,6 @@ public class QmsIssueTicketProcessControllerService { issueTicketToDoService.save(todoItem); } } - - issueTicketToDoService.processed(ticket.getId()); } /** @@ -437,6 +441,8 @@ public class QmsIssueTicketProcessControllerService { .set(QmsIssueTicketProcess::getApprovalTime, now) .update(); + issueTicketToDoService.processed(ticket.getId()); + // 3. 根据审批状态处理 if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) { // 驳回:推送给工单创建人 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 2736f96e..aec76401 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 @@ -217,7 +217,7 @@ public class QmsIssueTicketProcessMeasureControllerService { throw new NflgException(STATE.BusinessError, "字典【工单解决措施-临时纠正措施】不存在"); } for (QmsIssueTicketProcessDraftQO.MeasureItem item : temporaryMeasures) { - if (StrUtil.isBlank(item.getMeasureContent())) continue; + if (!shouldSaveMeasure(item, currentUserName)) continue; QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() .setIssueTicketProcessId(processId) .setMeasureTypeId(tempTypeId) @@ -237,7 +237,7 @@ public class QmsIssueTicketProcessMeasureControllerService { throw new NflgException(STATE.BusinessError, "字典【工单解决措施-永久纠正措施】不存在"); } for (QmsIssueTicketProcessDraftQO.MeasureItem item : permanentMeasures) { - if (StrUtil.isBlank(item.getMeasureContent())) continue; + if (!shouldSaveMeasure(item, currentUserName)) continue; QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() .setIssueTicketProcessId(processId) .setMeasureTypeId(permTypeId) @@ -250,4 +250,14 @@ public class QmsIssueTicketProcessMeasureControllerService { } } } + + private boolean shouldSaveMeasure(QmsIssueTicketProcessDraftQO.MeasureItem item, String currentUserName) { + if (item == null || StrUtil.isBlank(item.getMeasureContent())) { + return false; + } + if (StrUtil.isBlank(item.getChargeUser())) { + throw new NflgException(STATE.BusinessError, "措施负责人不能为空"); + } + return StrUtil.equals(item.getChargeUser(), currentUserName); + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessDraftQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessDraftQO.java index e5203e25..dd4bd4d6 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessDraftQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessDraftQO.java @@ -62,6 +62,11 @@ public class QmsIssueTicketProcessDraftQO { */ private String measureContent; + /** + * 负责人 + */ + private String chargeUser; + /** * 计划日期 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionTicketDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionTicketDetailVO.java index 4e91d9a0..43cf5c76 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionTicketDetailVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionTicketDetailVO.java @@ -214,6 +214,11 @@ public class QmsInspectionTicketDetailVO { @Data public static class MeasureVO { + /** + * 处理方案明细ID + */ + private Long id; + /** * 措施类型ID,关联字典项表 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java index f077f4d1..4c27df38 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java @@ -13,10 +13,12 @@ import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.entity.FileUploadRecord; import com.nflg.wms.repository.entity.QmsIssueTicket; import com.nflg.wms.repository.entity.QmsIssueTicketProcess; +import com.nflg.wms.repository.entity.QmsIssueTicketToDo; import com.nflg.wms.repository.mapper.QmsIssueTicketMapper; import com.nflg.wms.repository.service.IFileUploadRecordService; import com.nflg.wms.repository.service.IQmsIssueTicketProcessService; import com.nflg.wms.repository.service.IQmsIssueTicketService; +import com.nflg.wms.repository.service.IQmsIssueTicketToDoService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -35,6 +37,7 @@ public class QmsIssueTicketServiceImpl private final IFileUploadRecordService fileUploadRecordService; private final IQmsIssueTicketProcessService issueTicketProcessService; + private final IQmsIssueTicketToDoService issueTicketToDoService; @Override public PageData search(QmsIssueTicketSearchQO request) { @@ -51,6 +54,11 @@ public class QmsIssueTicketServiceImpl .list() .stream().map(QmsIssueTicketProcess::getIssueTicketId).distinct().collect(Collectors.toList()); + List todoTicketIds = issueTicketToDoService.lambdaQuery() + .eq(QmsIssueTicketToDo::getHandlerUserId, currentUserId) + .list() + .stream().map(QmsIssueTicketToDo::getTicketId).distinct().collect(Collectors.toList()); + var query = lambdaQuery() // 数据权限:只能看到与当前登录人相关的工单 .and(w -> { @@ -59,6 +67,9 @@ public class QmsIssueTicketServiceImpl if (CollectionUtil.isNotEmpty(processTicketIds)) { w.or().in(QmsIssueTicket::getId, processTicketIds); } + if (CollectionUtil.isNotEmpty(todoTicketIds)) { + w.or().in(QmsIssueTicket::getId, todoTicketIds); + } }) .like(StrUtil.isNotBlank(request.getTicketNo()), QmsIssueTicket::getTicketNo, request.getTicketNo()) .like(StrUtil.isNotBlank(request.getTicketTitle()), QmsIssueTicket::getTicketTitle, request.getTicketTitle())