巡检工单查询详情修改

This commit is contained in:
yf001217 2026-06-15 17:33:09 +08:00
parent 12332aa04f
commit 7cafe589d3
2 changed files with 44 additions and 17 deletions

View File

@ -3148,10 +3148,37 @@ public class QmsIssueTicketControllerService {
.filter(p -> p.getApprovalStatus() == null || p.getApprovalStatus() != 1)
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(validProcesses)) {
Long currentUserId = UserUtil.getUserId();
Short status = ticket.getStatus();
boolean isCreator = currentUserId.equals(ticket.getCreateUserId());
boolean isCompletedStatus = status != null && status == 2;
boolean isClosedStatus = status != null && status == 3;
boolean isVisibleLeader = validProcesses.stream()
.anyMatch(p -> isCurrentUserLeaderOfProcess(p, currentUserId));
boolean isVisibleHandler = validProcesses.stream()
.anyMatch(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId()));
List<QmsIssueTicketProcess> visibleProcesses;
if (isClosedStatus || (isCompletedStatus && isCreator)) {
visibleProcesses = validProcesses;
} else if (isVisibleLeader) {
visibleProcesses = validProcesses.stream()
.filter(p -> isCurrentUserLeaderOfProcess(p, currentUserId))
.collect(Collectors.toList());
} else if (isVisibleHandler) {
visibleProcesses = validProcesses.stream()
.filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId()))
.collect(Collectors.toList());
} else if (isCreator) {
visibleProcesses = validProcesses;
} else {
visibleProcesses = List.of();
}
if (CollectionUtil.isNotEmpty(visibleProcesses)) {
// 组装处理人列表按部门合并
Map<String, List<String>> handlersByDept = new LinkedHashMap<>();
for (QmsIssueTicketProcess process : validProcesses) {
for (QmsIssueTicketProcess process : visibleProcesses) {
if (StrUtil.isBlank(process.getHandlerUserName())) {
continue;
}
@ -3180,7 +3207,7 @@ public class QmsIssueTicketControllerService {
// 组装领导列表仅处理人已提交领导已审批时才展示
Map<String, List<String>> leadersByDept = new LinkedHashMap<>();
for (QmsIssueTicketProcess process : validProcesses) {
for (QmsIssueTicketProcess process : visibleProcesses) {
// 领导审批状态为 null 表示处理人尚未提交不展示
if (process.getLeaderApprovalResult() == null || StrUtil.isBlank(process.getLeaderUserName())) {
continue;
@ -3216,10 +3243,17 @@ public class QmsIssueTicketControllerService {
}
vo.setLeaders(leaders);
// 填充根本原因取第一条处理记录
QmsIssueTicketProcess firstProcess = validProcesses.get(0);
if (StrUtil.isNotBlank(firstProcess.getRootCause())) {
vo.setRootCause(firstProcess.getRootCause());
// 填充当前用户可见的根本原因
List<QmsIssueTicketProcess> rootCauseProcesses = visibleProcesses.stream()
.filter(p -> StrUtil.isNotBlank(p.getRootCause()))
.collect(Collectors.toList());
if (rootCauseProcesses.size() == 1) {
vo.setRootCause(rootCauseProcesses.get(0).getRootCause());
} else if (rootCauseProcesses.size() > 1) {
String rootCause = rootCauseProcesses.stream()
.map(QmsIssueTicketProcess::getRootCause)
.collect(Collectors.joining("\n"));
vo.setRootCause(rootCause);
}
// 查询纠正措施
@ -3229,7 +3263,7 @@ public class QmsIssueTicketControllerService {
List<QmsInspectionTicketDetailVO.MeasureVO> temporaryMeasures = new ArrayList<>();
List<QmsInspectionTicketDetailVO.MeasureVO> permanentMeasures = new ArrayList<>();
for (QmsIssueTicketProcess p : validProcesses) {
for (QmsIssueTicketProcess p : visibleProcesses) {
List<QmsIssueTicketProcessMeasure> measures = issueTicketProcessMeasureService.lambdaQuery()
.eq(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, p.getId())
.list();
@ -3267,13 +3301,8 @@ public class QmsIssueTicketControllerService {
}
// === 权限判断isReview / isDispatch / isEdit ===
Long currentUserId = UserUtil.getUserId();
// 获取该工单全部处理记录权限判断用全部记录不过滤
List<QmsIssueTicketProcess> allProcesses = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
.list();
Short status = ticket.getStatus();
List<QmsIssueTicketProcess> allProcesses = processes;
// 判断当前用户是否为负责人工单表的 approvalUserId
boolean isResponsiblePerson = currentUserId.equals(ticket.getApprovalUserId());
@ -3305,9 +3334,7 @@ public class QmsIssueTicketControllerService {
}
// 负责人权限工单状态为处理中时有审批和分配权限有了审批状态后失去审批权限
boolean isCreator = currentUserId.equals(ticket.getCreateUserId());
boolean isProcessingStatus = status != null && (status == 0 || status == 1);
boolean isCompletedStatus = status != null && status == 2;
boolean responsibleCanReview = isResponsiblePerson
&& status != null

View File

@ -162,7 +162,7 @@ public class QmsIssueTicketProcessMeasureControllerService {
// 处理人处理保存根本原因审批状态和措施
issueTicketProcessService.lambdaUpdate()
.eq(QmsIssueTicketProcess::getId, processId)
.set(request.getRootCause() != null, QmsIssueTicketProcess::getRootCause, mergedRootCause)
.set(request.getRootCause() != null, QmsIssueTicketProcess::getRootCause, request.getRootCause())
.set(request.getApprovalStatus() != null, QmsIssueTicketProcess::getApprovalStatus, request.getApprovalStatus())
.set(request.getApprovalOpinion() != null, QmsIssueTicketProcess::getApprovalOpinion, request.getApprovalOpinion())
.set(QmsIssueTicketProcess::getApprovalUserId, currentUserId)