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 fe0b8472..714805c9 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 @@ -2686,6 +2686,7 @@ public class QmsIssueTicketControllerService { vo.setIsDispatch(ticket.getStatus() != null && (ticket.getStatus() == 0 || ticket.getStatus() == 1)); vo.setIsReview(ticket.getStatus() != null && ticket.getStatus() == 2); vo.setIsEdit(false); + vo.setIsShut(ticket.getStatus() != null && ticket.getStatus() == 2); } else if (isHandler && process != null) { // 处理人: // - isDispatch=false(处理人无分派权限) @@ -2694,11 +2695,13 @@ public class QmsIssueTicketControllerService { vo.setIsDispatch(false); vo.setIsReview(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null); vo.setIsEdit(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null); + vo.setIsShut(false); } else { // 其他角色:无权限 vo.setIsDispatch(false); vo.setIsReview(false); vo.setIsEdit(false); + vo.setIsShut(false); } return vo; 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 e4d304d1..158337c7 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 @@ -500,11 +500,21 @@ public class QmsIssueTicketProcessControllerService { // 3. 根据审批状态处理 if (approvalStatus == 1) { - // 驳回:推送给工单创建人 - QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() - .setTicketId(ticket.getId()) - .setHandlerUserId(ticket.getCreateUserId()); - issueTicketToDoService.save(todoItem); + boolean allHandlersRejected = isAllPqcHandlersRejected(ticket.getId()); + if (allHandlersRejected) { + issueTicketService.lambdaUpdate() + .eq(QmsIssueTicket::getId, ticket.getId()) + .set(QmsIssueTicket::getStatus, (short) 0) + .set(QmsIssueTicket::getUpdateUserId, currentUserId) + .set(QmsIssueTicket::getUpdateUserName, currentUserName) + .set(QmsIssueTicket::getUpdateTime, now) + .update(); + + QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() + .setTicketId(ticket.getId()) + .setHandlerUserId(ticket.getCreateUserId()); + issueTicketToDoService.save(todoItem); + } } else if (approvalStatus == 0) { // 通过:校验措施(临时措施或永久措施至少填一个) boolean hasMeasures = checkPqcMeasures(process.getId()); @@ -594,4 +604,30 @@ public class QmsIssueTicketProcessControllerService { .allMatch(list -> list.stream() .anyMatch(p -> p.getApprovalTime() != null || currentUserId.equals(p.getHandlerUserId()))); } + + private boolean isAllPqcHandlersRejected(Long ticketId) { + List processes = issueTicketProcessService.lambdaQuery() + .eq(QmsIssueTicketProcess::getIssueTicketId, ticketId) + .list(); + + List dispatchedProcesses = processes.stream() + .filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) + .toList(); + List effectiveProcesses = dispatchedProcesses.isEmpty() + ? processes + : dispatchedProcesses; + + Map> processMap = effectiveProcesses.stream() + .filter(p -> p.getHandlerUserId() != null) + .collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId)); + if (processMap.isEmpty()) { + return false; + } + + return processMap + .values() + .stream() + .allMatch(list -> list.stream() + .anyMatch(p -> Objects.equals(p.getApprovalStatus(), (short) 1))); + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java index e7f2a957..51d61de9 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java @@ -61,6 +61,9 @@ public class QmsPqcTaskRecordControllerService { @Resource private IQmsIssueTicketService issueTicketService; + @Resource + private IQmsIssueTicketToDoService issueTicketToDoService; + @Resource private IUserService userService; @@ -1564,6 +1567,13 @@ public class QmsPqcTaskRecordControllerService { issueTicketService.save(ticket); + QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo() + .setTicketId(ticket.getId()) + .setHandlerUserId(taskRecord.getReviewerId()) + .setHasProcessed(false) + .setIsRead(false); + issueTicketToDoService.save(ticketTodo); + // 2. 任务总体合格时,仅生成工单,不创建重检任务 if (!Boolean.FALSE.equals(taskRecord.getEnable())) { return ticket.getId(); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPqcTicketMyDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPqcTicketMyDetailVO.java index 73f3d815..bfb58a01 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPqcTicketMyDetailVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPqcTicketMyDetailVO.java @@ -31,6 +31,8 @@ public class QmsPqcTicketMyDetailVO { */ private Boolean isEdit; + private Boolean isShut; + /** * 来源类型:3=PQC */