From 1181b5de026d771142f117a6bad0c14d2b97be3c Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Wed, 13 May 2026 08:32:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=9A=82=E5=AD=98=E5=92=8C?= =?UTF-8?q?=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 --- .../QmsIssueTicketControllerService.java | 17 ++++--- ...msIssueTicketProcessControllerService.java | 5 +- ...TicketProcessMeasureControllerService.java | 51 +++++++++++-------- .../pojo/qo/QmsIssueTicketProcessDraftQO.java | 45 ++++++++++------ 4 files changed, 73 insertions(+), 45 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 10ffa95a..88cdd97f 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 @@ -1688,19 +1688,24 @@ public class QmsIssueTicketControllerService { if (isLeader) { // 领导:isReview=true vo.setIsReview(true); - // isEdit:领导未提交审批(leaderApprovalResult为null)时有编辑权限 - boolean leaderNotSubmitted = allProcesses.stream() + // isEdit:领导未审批(leaderApprovalResult为null)且处理人已提交(approvalStatus不为null)时有编辑权限 + // 处理人再次提交后(leaderApprovalResult被重置为null),领导重新获得编辑权限 + boolean leaderCanEdit = allProcesses.stream() .filter(p -> currentUserId.equals(p.getLeaderUserId())) - .anyMatch(p -> p.getLeaderApprovalResult() == null); - vo.setIsEdit(leaderNotSubmitted); + .anyMatch(p -> p.getLeaderApprovalResult() == null && p.getApprovalStatus() != null); + vo.setIsEdit(leaderCanEdit); } else { // 处理人/审批人 boolean hasUnapproved = allProcesses.stream() .filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId())) .anyMatch(p -> p.getApprovalStatus() == null); vo.setIsReview(hasUnapproved); - // isEdit:处理人未提交(approvalStatus为null)时有编辑权限 - vo.setIsEdit(hasUnapproved); + // isEdit:未提交(approvalStatus为null)或领导驳回(leaderApprovalResult==1)时有编辑权限 + boolean canEdit = allProcesses.stream() + .filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId())) + .anyMatch(p -> p.getApprovalStatus() == null + || (p.getLeaderApprovalResult() != null && p.getLeaderApprovalResult() == 1)); + vo.setIsEdit(canEdit); } } 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 4f9964f4..25e25153 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 @@ -254,10 +254,13 @@ public class QmsIssueTicketProcessControllerService { // 2. 保存数据 issueTicketProcessMeasureControllerService.draft(request); - // 3. 写入审批时间 + // 3. 写入审批时间,并重置领导审批结果(允许领导重新审批) issueTicketProcessService.lambdaUpdate() .eq(QmsIssueTicketProcess::getId, request.getId()) .set(QmsIssueTicketProcess::getApprovalTime, now) + .set(QmsIssueTicketProcess::getLeaderApprovalResult, null) + .set(QmsIssueTicketProcess::getLeaderApprovalOpinion, null) + .set(QmsIssueTicketProcess::getLeaderApprovalTime, null) .update(); // 4. 根据审批状态推送待办 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 4f708a9c..e4780514 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 @@ -1,5 +1,6 @@ package com.nflg.qms.admin.service; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; @@ -59,17 +60,20 @@ public class QmsIssueTicketProcessMeasureControllerService { .set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName()) .update(); - // 有措施内容则新增一条措施记录 - if (StrUtil.isNotBlank(request.getMeasureContent())) { - QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() - .setIssueTicketProcessId(request.getId()) - .setMeasureContent(request.getMeasureContent()) - .setMeasureTypeId(request.getMeasureTypeId()) - .setChargeUser(UserUtil.getUserName()) // 自动设置为当前登录用户 - .setPlanDate(request.getPlanDate()) - .setConfirmDate(request.getConfirmDate()) - .setRemark(request.getRemark()); - issueTicketProcessMeasureService.save(measure); + // 有措施列表则批量新增措施记录 + if (CollectionUtil.isNotEmpty(request.getMeasures())) { + for (QmsIssueTicketProcessDraftQO.MeasureItem item : request.getMeasures()) { + if (StrUtil.isBlank(item.getMeasureContent())) continue; + QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() + .setIssueTicketProcessId(request.getId()) + .setMeasureContent(item.getMeasureContent()) + .setMeasureTypeId(item.getMeasureTypeId()) + .setChargeUser(UserUtil.getUserName()) + .setPlanDate(item.getPlanDate()) + .setConfirmDate(item.getConfirmDate()) + .setRemark(item.getRemark()); + issueTicketProcessMeasureService.save(measure); + } } } @@ -135,17 +139,20 @@ public class QmsIssueTicketProcessMeasureControllerService { .set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName()) .update(); - // 有措施内容则新增 - if (StrUtil.isNotBlank(request.getMeasureContent())) { - QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() - .setIssueTicketProcessId(request.getId()) - .setMeasureContent(request.getMeasureContent()) - .setMeasureTypeId(request.getMeasureTypeId()) - .setChargeUser(UserUtil.getUserName()) - .setPlanDate(request.getPlanDate()) - .setConfirmDate(request.getConfirmDate()) - .setRemark(request.getRemark()); - issueTicketProcessMeasureService.save(measure); + // 有措施列表则批量新增 + if (CollectionUtil.isNotEmpty(request.getMeasures())) { + for (QmsIssueTicketProcessDraftQO.MeasureItem item : request.getMeasures()) { + if (StrUtil.isBlank(item.getMeasureContent())) continue; + QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() + .setIssueTicketProcessId(request.getId()) + .setMeasureContent(item.getMeasureContent()) + .setMeasureTypeId(item.getMeasureTypeId()) + .setChargeUser(UserUtil.getUserName()) + .setPlanDate(item.getPlanDate()) + .setConfirmDate(item.getConfirmDate()) + .setRemark(item.getRemark()); + issueTicketProcessMeasureService.save(measure); + } } } else { // 领导审批:前端传入approvalStatus/approvalOpinion,数据库填入leaderApprovalResult/leaderApprovalOpinion 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 f72af2b7..e3aba89a 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 @@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import java.time.LocalDate; +import java.util.List; /** * 质量问题工单处理 暂存/提交参数 @@ -33,27 +34,39 @@ public class QmsIssueTicketProcessDraftQO { private String approvalOpinion; /** - * 措施内容(可选),有值则新增一条 QmsIssueTicketProcessMeasure 记录 + * 措施列表(可选),每项对应一条 QmsIssueTicketProcessMeasure 记录 */ - private String measureContent; + private List measures; /** - * 措施类型ID(可选),关联字典项表 + * 措施项 */ - private Long measureTypeId; + @Data + public static class MeasureItem { - /** - * 计划日期(可选) - */ - private LocalDate planDate; + /** + * 措施类型ID,关联字典项表 + */ + private Long measureTypeId; - /** - * 确认日期(可选) - */ - private LocalDate confirmDate; + /** + * 措施内容 + */ + private String measureContent; - /** - * 备注(可选) - */ - private String remark; + /** + * 计划日期 + */ + private LocalDate planDate; + + /** + * 确认日期 + */ + private LocalDate confirmDate; + + /** + * 备注 + */ + private String remark; + } }