工单负责人驳回修改

pqc工单完成修改
This commit is contained in:
yf001217 2026-06-15 09:51:31 +08:00
parent 84df559f22
commit 9e2682981d
4 changed files with 50 additions and 58 deletions

View File

@ -3268,42 +3268,29 @@ public class QmsIssueTicketControllerService {
} }
// 负责人权限工单状态为处理中时有审批和分配权限有了审批状态后失去审批权限 // 负责人权限工单状态为处理中时有审批和分配权限有了审批状态后失去审批权限
if (isResponsiblePerson) { boolean isCreator = currentUserId.equals(ticket.getCreateUserId());
vo.setIsReview(status != null && status == 1 && ticket.getApprovalStatus() == null); boolean isProcessingStatus = status != null && (status == 0 || status == 1);
vo.setIsDispatch(status != null && status == 1); boolean isCompletedStatus = status != null && status == 2;
vo.setIsEdit(false);
vo.setIsShut(false); boolean responsibleCanReview = isResponsiblePerson
} && status != null
// 处理人权限未提交或领导驳回重置后可编辑处理人提交后关闭编辑权限 && status == 1
else if (isHandler) { && ticket.getApprovalStatus() == null;
Short handlerApprovalStatus = myProcess.getApprovalStatus(); boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus;
vo.setIsReview(handlerApprovalStatus == null);
vo.setIsEdit(handlerApprovalStatus == null); Short handlerApprovalStatus = isHandler ? myProcess.getApprovalStatus() : null;
vo.setIsDispatch(false); boolean handlerCanReview = isHandler && handlerApprovalStatus == null;
vo.setIsShut(false); boolean handlerCanEdit = handlerCanReview;
}
// 领导权限只有审核权限 boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId);
else if (isLeader) {
vo.setIsReview(hasPendingLeaderReview(allProcesses, currentUserId)); boolean creatorCanDispatch = isCreator && status != null && status == 0;
vo.setIsEdit(false); boolean creatorCanShut = isCreator && isCompletedStatus;
vo.setIsDispatch(false);
vo.setIsShut(false); vo.setIsReview(responsibleCanReview || handlerCanReview || leaderCanReview);
} vo.setIsDispatch(responsibleCanDispatch || creatorCanDispatch);
// 创建人权限 vo.setIsEdit(handlerCanEdit);
else if (currentUserId.equals(ticket.getCreateUserId())) { vo.setIsShut(creatorCanShut);
vo.setIsReview(false);
vo.setIsDispatch(status != null && status == 0);
vo.setIsEdit(false);
// 创建人且工单状态为已完成时有关闭权限
vo.setIsShut(status != null && status == 2);
}
// 其他
else {
vo.setIsReview(false);
vo.setIsDispatch(false);
vo.setIsEdit(false);
vo.setIsShut(false);
}
return vo; return vo;
} }

View File

@ -157,16 +157,7 @@ public class QmsIssueTicketProcessControllerService {
} }
// 2. 通过工单ID + 当前登录人查找处理记录 // 2. 通过工单ID + 当前登录人查找处理记录
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery() QmsIssueTicketProcess process = getCurrentUserProcess(request.getId(), currentUserId);
.eq(QmsIssueTicketProcess::getIssueTicketId, request.getId())
.and(w -> w
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
.or()
.eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
.or()
.eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId))
.last("LIMIT 1")
.one();
// 如果没找到检查当前用户是否为处理人的部门负责人 // 如果没找到检查当前用户是否为处理人的部门负责人
if (process == null) { if (process == null) {
@ -251,6 +242,25 @@ public class QmsIssueTicketProcessControllerService {
/** /**
* 领导审批统一处理PDI和巡检共用 * 领导审批统一处理PDI和巡检共用
*/ */
private QmsIssueTicketProcess getCurrentUserProcess(Long ticketId, Long currentUserId) {
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
.and(w -> w
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
.or()
.eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
.or()
.eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId))
.list();
if (processes.isEmpty()) {
return null;
}
return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
.findFirst()
.orElse(processes.get(0));
}
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

@ -211,7 +211,7 @@ public class QmsIssueTicketProcessMeasureControllerService {
* 通过工单ID + 用户ID查找处理记录 * 通过工单ID + 用户ID查找处理记录
*/ */
private QmsIssueTicketProcess findProcessByTicketAndUser(Long ticketId, Long userId) { private QmsIssueTicketProcess findProcessByTicketAndUser(Long ticketId, Long userId) {
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery() List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId) .eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
.and(w -> w .and(w -> w
.eq(QmsIssueTicketProcess::getHandlerUserId, userId) .eq(QmsIssueTicketProcess::getHandlerUserId, userId)
@ -219,12 +219,14 @@ public class QmsIssueTicketProcessMeasureControllerService {
.eq(QmsIssueTicketProcess::getApprovalUserId, userId) .eq(QmsIssueTicketProcess::getApprovalUserId, userId)
.or() .or()
.eq(QmsIssueTicketProcess::getLeaderUserId, userId)) .eq(QmsIssueTicketProcess::getLeaderUserId, userId))
.last("LIMIT 1") .list();
.one(); if (processes.isEmpty()) {
if (process == null) {
throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录"); throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录");
} }
return process; return processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
.findFirst()
.orElse(processes.get(0));
} }
/** /**

View File

@ -1576,13 +1576,6 @@ public class QmsPqcTaskRecordControllerService {
.setHandlerUserName(taskRecord.getReviewerName()); .setHandlerUserName(taskRecord.getReviewerName());
issueTicketProcessService.save(ticketProcess); issueTicketProcessService.save(ticketProcess);
QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(taskRecord.getReviewerId())
.setHasProcessed(false)
.setIsRead(false);
issueTicketToDoService.save(ticketTodo);
// 2. 任务总体合格时仅生成工单不创建重检任务 // 2. 任务总体合格时仅生成工单不创建重检任务
if (!Boolean.FALSE.equals(taskRecord.getEnable())) { if (!Boolean.FALSE.equals(taskRecord.getEnable())) {
return ticket.getId(); return ticket.getId();