工单暂存和提交接口修改

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) {
// 领导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);
}
}

View File

@ -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. 根据审批状态推送待办

View File

@ -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

View File

@ -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<MeasureItem> 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;
}
}