工单暂存和提交接口修改

This commit is contained in:
funny 2026-05-13 08:32:06 +08:00
parent e8a38ae171
commit 1181b5de02
4 changed files with 73 additions and 45 deletions

View File

@ -1688,19 +1688,24 @@ public class QmsIssueTicketControllerService {
if (isLeader) { if (isLeader) {
// 领导isReview=true // 领导isReview=true
vo.setIsReview(true); vo.setIsReview(true);
// isEdit领导未提交审批leaderApprovalResult为null时有编辑权限 // isEdit领导未审批leaderApprovalResult为null且处理人已提交approvalStatus不为null时有编辑权限
boolean leaderNotSubmitted = allProcesses.stream() // 处理人再次提交后leaderApprovalResult被重置为null领导重新获得编辑权限
boolean leaderCanEdit = allProcesses.stream()
.filter(p -> currentUserId.equals(p.getLeaderUserId())) .filter(p -> currentUserId.equals(p.getLeaderUserId()))
.anyMatch(p -> p.getLeaderApprovalResult() == null); .anyMatch(p -> p.getLeaderApprovalResult() == null && p.getApprovalStatus() != null);
vo.setIsEdit(leaderNotSubmitted); vo.setIsEdit(leaderCanEdit);
} else { } else {
// 处理人/审批人 // 处理人/审批人
boolean hasUnapproved = allProcesses.stream() boolean hasUnapproved = allProcesses.stream()
.filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId())) .filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId()))
.anyMatch(p -> p.getApprovalStatus() == null); .anyMatch(p -> p.getApprovalStatus() == null);
vo.setIsReview(hasUnapproved); vo.setIsReview(hasUnapproved);
// isEdit处理人未提交approvalStatus为null时有编辑权限 // isEdit未提交approvalStatus为null或领导驳回leaderApprovalResult==1时有编辑权限
vo.setIsEdit(hasUnapproved); 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);
} }
} }

View File

@ -254,10 +254,13 @@ public class QmsIssueTicketProcessControllerService {
// 2. 保存数据 // 2. 保存数据
issueTicketProcessMeasureControllerService.draft(request); issueTicketProcessMeasureControllerService.draft(request);
// 3. 写入审批时间 // 3. 写入审批时间并重置领导审批结果允许领导重新审批
issueTicketProcessService.lambdaUpdate() issueTicketProcessService.lambdaUpdate()
.eq(QmsIssueTicketProcess::getId, request.getId()) .eq(QmsIssueTicketProcess::getId, request.getId())
.set(QmsIssueTicketProcess::getApprovalTime, now) .set(QmsIssueTicketProcess::getApprovalTime, now)
.set(QmsIssueTicketProcess::getLeaderApprovalResult, null)
.set(QmsIssueTicketProcess::getLeaderApprovalOpinion, null)
.set(QmsIssueTicketProcess::getLeaderApprovalTime, null)
.update(); .update();
// 4. 根据审批状态推送待办 // 4. 根据审批状态推送待办

View File

@ -1,5 +1,6 @@
package com.nflg.qms.admin.service; package com.nflg.qms.admin.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
@ -59,17 +60,20 @@ public class QmsIssueTicketProcessMeasureControllerService {
.set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName()) .set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName())
.update(); .update();
// 有措施内容则新增一条措施记录 // 有措施列表则批量新增措施记录
if (StrUtil.isNotBlank(request.getMeasureContent())) { if (CollectionUtil.isNotEmpty(request.getMeasures())) {
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() for (QmsIssueTicketProcessDraftQO.MeasureItem item : request.getMeasures()) {
.setIssueTicketProcessId(request.getId()) if (StrUtil.isBlank(item.getMeasureContent())) continue;
.setMeasureContent(request.getMeasureContent()) QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()
.setMeasureTypeId(request.getMeasureTypeId()) .setIssueTicketProcessId(request.getId())
.setChargeUser(UserUtil.getUserName()) // 自动设置为当前登录用户 .setMeasureContent(item.getMeasureContent())
.setPlanDate(request.getPlanDate()) .setMeasureTypeId(item.getMeasureTypeId())
.setConfirmDate(request.getConfirmDate()) .setChargeUser(UserUtil.getUserName())
.setRemark(request.getRemark()); .setPlanDate(item.getPlanDate())
issueTicketProcessMeasureService.save(measure); .setConfirmDate(item.getConfirmDate())
.setRemark(item.getRemark());
issueTicketProcessMeasureService.save(measure);
}
} }
} }
@ -135,17 +139,20 @@ public class QmsIssueTicketProcessMeasureControllerService {
.set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName()) .set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName())
.update(); .update();
// 有措施内容则新增 // 有措施列表则批量新增
if (StrUtil.isNotBlank(request.getMeasureContent())) { if (CollectionUtil.isNotEmpty(request.getMeasures())) {
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() for (QmsIssueTicketProcessDraftQO.MeasureItem item : request.getMeasures()) {
.setIssueTicketProcessId(request.getId()) if (StrUtil.isBlank(item.getMeasureContent())) continue;
.setMeasureContent(request.getMeasureContent()) QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()
.setMeasureTypeId(request.getMeasureTypeId()) .setIssueTicketProcessId(request.getId())
.setChargeUser(UserUtil.getUserName()) .setMeasureContent(item.getMeasureContent())
.setPlanDate(request.getPlanDate()) .setMeasureTypeId(item.getMeasureTypeId())
.setConfirmDate(request.getConfirmDate()) .setChargeUser(UserUtil.getUserName())
.setRemark(request.getRemark()); .setPlanDate(item.getPlanDate())
issueTicketProcessMeasureService.save(measure); .setConfirmDate(item.getConfirmDate())
.setRemark(item.getRemark());
issueTicketProcessMeasureService.save(measure);
}
} }
} else { } else {
// 领导审批前端传入approvalStatus/approvalOpinion数据库填入leaderApprovalResult/leaderApprovalOpinion // 领导审批前端传入approvalStatus/approvalOpinion数据库填入leaderApprovalResult/leaderApprovalOpinion

View File

@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* 质量问题工单处理 暂存/提交参数 * 质量问题工单处理 暂存/提交参数
@ -33,27 +34,39 @@ public class QmsIssueTicketProcessDraftQO {
private String approvalOpinion; private String approvalOpinion;
/** /**
* 措施内容可选有值则新增一条 QmsIssueTicketProcessMeasure 记录 * 措施列表可选每项对应一条 QmsIssueTicketProcessMeasure 记录
*/ */
private String measureContent; private List<MeasureItem> measures;
/** /**
* 措施类型ID可选关联字典 * 措施
*/ */
private Long measureTypeId; @Data
public static class MeasureItem {
/** /**
* 计划日期可选 * 措施类型ID关联字典项表
*/ */
private LocalDate planDate; private Long measureTypeId;
/** /**
* 确认日期可选 * 措施内容
*/ */
private LocalDate confirmDate; private String measureContent;
/** /**
* 备注可选 * 计划日期
*/ */
private String remark; private LocalDate planDate;
/**
* 确认日期
*/
private LocalDate confirmDate;
/**
* 备注
*/
private String remark;
}
} }