parent
40d34676ed
commit
aa42f0b58d
|
|
@ -149,6 +149,13 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
|
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
|
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 + 当前登录人查找处理记录
|
// 2. 通过工单ID + 当前登录人查找处理记录
|
||||||
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
|
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
|
||||||
.eq(QmsIssueTicketProcess::getIssueTicketId, request.getId())
|
.eq(QmsIssueTicketProcess::getIssueTicketId, request.getId())
|
||||||
|
|
@ -244,6 +251,29 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
/**
|
/**
|
||||||
* 领导审批统一处理(PDI和巡检共用)
|
* 领导审批统一处理(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,
|
private void leaderSubmitUnified(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
|
||||||
QmsIssueTicketProcess process, LocalDateTime now,
|
QmsIssueTicketProcess process, LocalDateTime now,
|
||||||
Long currentUserId, String currentUserName) {
|
Long currentUserId, String currentUserName) {
|
||||||
|
|
@ -464,7 +494,7 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否是最后一个处理人
|
// 判断是否是最后一个处理人
|
||||||
boolean isLastHandler = isLastPqcHandler(ticket.getId());
|
boolean isLastHandler = isLastPqcHandler(ticket.getId(), currentUserId);
|
||||||
if (isLastHandler) {
|
if (isLastHandler) {
|
||||||
// 最后一个处理人提交,工单状态改为2(已完成)
|
// 最后一个处理人提交,工单状态改为2(已完成)
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
|
|
@ -518,14 +548,26 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
* 判断是否是PQC工单最后一个处理人
|
* 判断是否是PQC工单最后一个处理人
|
||||||
* @return true=是最后一个,false=不是
|
* @return true=是最后一个,false=不是
|
||||||
*/
|
*/
|
||||||
private boolean isLastPqcHandler(Long ticketId) {
|
private boolean isLastPqcHandler(Long ticketId, Long currentUserId) {
|
||||||
// 查询该工单所有处理记录
|
// 查询该工单所有处理记录
|
||||||
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
|
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
|
||||||
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
|
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
|
||||||
.list();
|
.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()
|
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) {
|
public void draftUnified(@Valid QmsIssueTicketProcessDraftQO request) {
|
||||||
Long currentUserId = UserUtil.getUserId();
|
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 + 当前登录人查找处理记录
|
// 1. 通过工单ID + 当前登录人查找处理记录
|
||||||
QmsIssueTicketProcess process = findProcessByTicketAndUser(request.getId(), currentUserId);
|
QmsIssueTicketProcess process = findProcessByTicketAndUser(request.getId(), currentUserId);
|
||||||
Long processId = process.getId();
|
Long processId = process.getId();
|
||||||
|
|
||||||
// 2. 查询工单获取source_type
|
// 2. 查询工单获取source_type
|
||||||
QmsIssueTicket ticket = issueTicketService.getById(request.getId());
|
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
|
|
||||||
|
|
||||||
Short sourceType = ticket.getSourceType();
|
Short sourceType = ticket.getSourceType();
|
||||||
Long handlerUserId = process.getHandlerUserId();
|
Long handlerUserId = process.getHandlerUserId();
|
||||||
String mergedRootCause = mergeRootCause(process.getRootCause(), request.getRootCause());
|
String mergedRootCause = mergeRootCause(process.getRootCause(), request.getRootCause());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue