工单负责人驳回修改

pqc工单完成修改
This commit is contained in:
yf001217 2026-06-14 21:05:50 +08:00
parent 40d34676ed
commit aa42f0b58d
2 changed files with 55 additions and 7 deletions

View File

@ -149,6 +149,13 @@ public class QmsIssueTicketProcessControllerService {
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
if (Objects.equals(ticket.getSourceType(), (short) 2)
&& Objects.equals(ticket.getApprovalUserId(), currentUserId)
&& Objects.equals(request.getApprovalStatus(), (short) 1)) {
rejectInspectionByResponsible(request, ticket, now, currentUserId, currentUserName);
return;
}
// 2. 通过工单ID + 当前登录人查找处理记录
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, request.getId())
@ -244,6 +251,29 @@ public class QmsIssueTicketProcessControllerService {
/**
* 领导审批统一处理PDI和巡检共用
*/
private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
LocalDateTime now, Long currentUserId, String currentUserName) {
issueTicketToDoService.processed(ticket.getId());
issueTicketService.lambdaUpdate()
.eq(QmsIssueTicket::getId, ticket.getId())
.set(QmsIssueTicket::getStatus, (short) 2)
.set(QmsIssueTicket::getApprovalStatus, request.getApprovalStatus())
.set(request.getApprovalOpinion() != null,
QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion())
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
.set(QmsIssueTicket::getUpdateUserName, currentUserName)
.set(QmsIssueTicket::getUpdateTime, now)
.update();
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(ticket.getCreateUserId())
.setHasProcessed(false)
.setIsRead(false);
issueTicketToDoService.save(todoItem);
}
private void leaderSubmitUnified(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
QmsIssueTicketProcess process, LocalDateTime now,
Long currentUserId, String currentUserName) {
@ -464,7 +494,7 @@ public class QmsIssueTicketProcessControllerService {
}
// 判断是否是最后一个处理人
boolean isLastHandler = isLastPqcHandler(ticket.getId());
boolean isLastHandler = isLastPqcHandler(ticket.getId(), currentUserId);
if (isLastHandler) {
// 最后一个处理人提交工单状态改为2已完成
issueTicketService.lambdaUpdate()
@ -518,14 +548,26 @@ public class QmsIssueTicketProcessControllerService {
* 判断是否是PQC工单最后一个处理人
* @return true=是最后一个false=不是
*/
private boolean isLastPqcHandler(Long ticketId) {
private boolean isLastPqcHandler(Long ticketId, Long currentUserId) {
// 查询该工单所有处理记录
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
.list();
// 检查是否所有人的approval_time都不为空
Map<Long, List<QmsIssueTicketProcess>> processMap = processes.stream()
.filter(p -> p.getHandlerUserId() != null)
.collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId));
if (processMap.isEmpty()) {
return false;
}
// 按处理人去重判断避免同一个处理人存在重复处理记录时一直卡在处理中
return processes.stream()
.allMatch(p -> p.getApprovalTime() != null);
.filter(p -> p.getHandlerUserId() != null)
.collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId))
.values()
.stream()
.allMatch(list -> list.stream()
.anyMatch(p -> p.getApprovalTime() != null || currentUserId.equals(p.getHandlerUserId())));
}
}

View File

@ -126,14 +126,20 @@ public class QmsIssueTicketProcessMeasureControllerService {
public void draftUnified(@Valid QmsIssueTicketProcessDraftQO request) {
Long currentUserId = UserUtil.getUserId();
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
if (Objects.equals(ticket.getSourceType(), (short) 2)
&& Objects.equals(ticket.getApprovalUserId(), currentUserId)
&& Objects.equals(request.getApprovalStatus(), (short) 1)) {
return;
}
// 1. 通过工单ID + 当前登录人查找处理记录
QmsIssueTicketProcess process = findProcessByTicketAndUser(request.getId(), currentUserId);
Long processId = process.getId();
// 2. 查询工单获取source_type
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
Short sourceType = ticket.getSourceType();
Long handlerUserId = process.getHandlerUserId();
String mergedRootCause = mergeRootCause(process.getRootCause(), request.getRootCause());