巡检工单流程修改

This commit is contained in:
yf001217 2026-06-16 15:22:47 +08:00
parent 0e08927c3a
commit 1ded1581d4
4 changed files with 54 additions and 12 deletions

View File

@ -3428,11 +3428,8 @@ public class QmsIssueTicketControllerService {
boolean isResponsiblePerson = currentUserId.equals(ticket.getApprovalUserId()); boolean isResponsiblePerson = currentUserId.equals(ticket.getApprovalUserId());
// 判断当前用户是否为处理人 // 判断当前用户是否为处理人
QmsIssueTicketProcess myProcess = allProcesses.stream() boolean isHandler = allProcesses.stream()
.filter(p -> currentUserId.equals(p.getHandlerUserId())) .anyMatch(p -> currentUserId.equals(p.getHandlerUserId()));
.findFirst()
.orElse(null);
boolean isHandler = myProcess != null;
// 判断是否为领导1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人 // 判断是否为领导1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人
boolean isLeader = allProcesses.stream() boolean isLeader = allProcesses.stream()
@ -3462,8 +3459,9 @@ public class QmsIssueTicketControllerService {
&& ticket.getApprovalStatus() == null; && ticket.getApprovalStatus() == null;
boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus; boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus;
Short handlerApprovalStatus = isHandler ? myProcess.getApprovalStatus() : null; boolean handlerCanReview = allProcesses.stream()
boolean handlerCanReview = isHandler && handlerApprovalStatus == null; .filter(p -> currentUserId.equals(p.getHandlerUserId()))
.anyMatch(p -> p.getApprovalStatus() == null && p.getLeaderApprovalResult() == null);
boolean handlerCanEdit = handlerCanReview; boolean handlerCanEdit = handlerCanReview;
boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId); boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId);

View File

@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -298,11 +299,32 @@ public class QmsIssueTicketProcessControllerService {
return null; return null;
} }
return processes.stream() return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) .min(Comparator.comparingInt(p -> getProcessPriority(p, currentUserId)))
.findFirst()
.orElse(processes.get(0)); .orElse(processes.get(0));
} }
private int getProcessPriority(QmsIssueTicketProcess process, Long currentUserId) {
if (Objects.equals(process.getHandlerUserId(), currentUserId)
&& process.getApprovalStatus() == null
&& process.getLeaderApprovalResult() == null) {
return 0;
}
if (Objects.equals(process.getApprovalUserId(), currentUserId)
&& process.getApprovalStatus() == null
&& process.getLeaderApprovalResult() == null) {
return 1;
}
if (Objects.equals(process.getLeaderUserId(), currentUserId)
&& Objects.equals(process.getApprovalStatus(), (short) 0)
&& process.getLeaderApprovalResult() == null) {
return 2;
}
if (StrUtil.isNotBlank(process.getTaskResultIds())) {
return 3;
}
return 4;
}
private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket, private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
LocalDateTime now, Long currentUserId, String currentUserName) { LocalDateTime now, Long currentUserId, String currentUserName) {
issueTicketToDoService.processed(ticket.getId()); issueTicketToDoService.processed(ticket.getId());

View File

@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -236,11 +237,32 @@ public class QmsIssueTicketProcessMeasureControllerService {
throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录"); throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录");
} }
return processes.stream() return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) .min(Comparator.comparingInt(p -> getProcessPriority(p, userId)))
.findFirst()
.orElse(processes.get(0)); .orElse(processes.get(0));
} }
private int getProcessPriority(QmsIssueTicketProcess process, Long userId) {
if (Objects.equals(process.getHandlerUserId(), userId)
&& process.getApprovalStatus() == null
&& process.getLeaderApprovalResult() == null) {
return 0;
}
if (Objects.equals(process.getApprovalUserId(), userId)
&& process.getApprovalStatus() == null
&& process.getLeaderApprovalResult() == null) {
return 1;
}
if (Objects.equals(process.getLeaderUserId(), userId)
&& Objects.equals(process.getApprovalStatus(), (short) 0)
&& process.getLeaderApprovalResult() == null) {
return 2;
}
if (StrUtil.isNotBlank(process.getTaskResultIds())) {
return 3;
}
return 4;
}
/** /**
* 保存措施记录先删除旧数据再分别插入临时措施和永久措施 * 保存措施记录先删除旧数据再分别插入临时措施和永久措施
*/ */

View File

@ -13,7 +13,7 @@
vit.* vit.*
FROM qms_issue_ticket_todo itd FROM qms_issue_ticket_todo itd
INNER JOIN v_qms_issue_ticket vit ON itd.ticket_id = vit.ticket_id INNER JOIN v_qms_issue_ticket vit ON itd.ticket_id = vit.ticket_id
where itd.handler_user_id = #{userId} and (vit.handler_user_id=#{userId} or vit.approval_user_id=#{userId}) where itd.handler_user_id = #{userId}
<if test="request.sourceType != null"> <if test="request.sourceType != null">
AND vit.source_type = #{request.sourceType} AND vit.source_type = #{request.sourceType}
</if> </if>