巡检工单流程修改

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

View File

@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -298,11 +299,32 @@ public class QmsIssueTicketProcessControllerService {
return null;
}
return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
.findFirst()
.min(Comparator.comparingInt(p -> getProcessPriority(p, currentUserId)))
.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,
LocalDateTime now, Long currentUserId, String currentUserName) {
issueTicketToDoService.processed(ticket.getId());

View File

@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@ -236,11 +237,32 @@ public class QmsIssueTicketProcessMeasureControllerService {
throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录");
}
return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
.findFirst()
.min(Comparator.comparingInt(p -> getProcessPriority(p, userId)))
.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.*
FROM qms_issue_ticket_todo itd
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">
AND vit.source_type = #{request.sourceType}
</if>