parent
40d34676ed
commit
aa42f0b58d
|
|
@ -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())));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Reference in New Issue