Merge remote-tracking branch '惠信/qms/develop' into qms/develop
This commit is contained in:
commit
7d6747606a
|
|
@ -382,6 +382,9 @@ public class QmsIssueTicketControllerService {
|
|||
issueTicketToDoService.save(todoItem);
|
||||
} else {
|
||||
// 通过:按现有流程处理
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getHandlerUserIds()))
|
||||
.throwMessage("处理人列表不能为空");
|
||||
|
||||
// 校验不能分配给自己
|
||||
if (request.getHandlerUserIds().contains(currentUserId)) {
|
||||
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
@ -222,19 +229,7 @@ public class QmsIssueTicketProcessControllerService {
|
|||
issueTicketToDoService.save(todoItem);
|
||||
} else if (request.getApprovalStatus() != null && request.getApprovalStatus() == 0) {
|
||||
// 通过:推送给处理人所在部门负责人
|
||||
UserInterior userInterior = userInteriorService.lambdaQuery()
|
||||
.eq(UserInterior::getUserId, currentUserId)
|
||||
.one();
|
||||
|
||||
if (userInterior != null && userInterior.getDeptId() != null) {
|
||||
Department department = departmentService.getById(userInterior.getDeptId());
|
||||
if (department != null && department.getHeadUserId() != null) {
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(department.getHeadUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
}
|
||||
pushLeaderTicketTodo(ticket.getId(), process.getId(), currentUserId);
|
||||
}
|
||||
} else {
|
||||
// 领导审批
|
||||
|
|
@ -256,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) {
|
||||
|
|
@ -402,18 +420,7 @@ public class QmsIssueTicketProcessControllerService {
|
|||
} else if (request.getApprovalStatus() == 0) {
|
||||
// 通过:推送给当前用户所在部门负责人
|
||||
Long currentUserId = UserUtil.getUserId();
|
||||
UserInterior userInterior = userInteriorService.lambdaQuery()
|
||||
.eq(UserInterior::getUserId, currentUserId)
|
||||
.one();
|
||||
if (userInterior != null && userInterior.getDeptId() != null) {
|
||||
Department department = departmentService.getById(userInterior.getDeptId());
|
||||
if (department != null && department.getHeadUserId() != null) {
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(department.getHeadUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
}
|
||||
pushLeaderTicketTodo(ticket.getId(), processId, currentUserId);
|
||||
|
||||
// 推送消息给工单创建人
|
||||
if (ticket.getCreateUserId() != null) {
|
||||
|
|
@ -428,6 +435,35 @@ public class QmsIssueTicketProcessControllerService {
|
|||
/**
|
||||
* PQC工单处理人提交
|
||||
*/
|
||||
private void pushLeaderTicketTodo(Long ticketId, Long processId, Long handlerUserId) {
|
||||
UserInterior userInterior = userInteriorService.lambdaQuery()
|
||||
.eq(UserInterior::getUserId, handlerUserId)
|
||||
.one();
|
||||
if (userInterior == null || userInterior.getDeptId() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Department department = departmentService.getById(userInterior.getDeptId());
|
||||
if (department == null || department.getHeadUserId() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
User leaderUser = userService.getById(department.getHeadUserId());
|
||||
issueTicketProcessService.lambdaUpdate()
|
||||
.eq(QmsIssueTicketProcess::getId, processId)
|
||||
.set(QmsIssueTicketProcess::getLeaderUserId, department.getHeadUserId())
|
||||
.set(leaderUser != null, QmsIssueTicketProcess::getLeaderUserName,
|
||||
leaderUser == null ? null : leaderUser.getUserName())
|
||||
.update();
|
||||
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticketId)
|
||||
.setHandlerUserId(department.getHeadUserId())
|
||||
.setHasProcessed(false)
|
||||
.setIsRead(false);
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submitPqcHandler(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
|
||||
QmsIssueTicketProcess process, LocalDateTime now,
|
||||
|
|
@ -458,12 +494,13 @@ public class QmsIssueTicketProcessControllerService {
|
|||
}
|
||||
|
||||
// 判断是否是最后一个处理人
|
||||
boolean isLastHandler = isLastPqcHandler(ticket.getId());
|
||||
boolean isLastHandler = isLastPqcHandler(ticket.getId(), currentUserId);
|
||||
if (isLastHandler) {
|
||||
// 最后一个处理人提交,工单状态改为2(已完成)
|
||||
issueTicketService.lambdaUpdate()
|
||||
.eq(QmsIssueTicket::getId, ticket.getId())
|
||||
.set(QmsIssueTicket::getStatus, (short) 2)
|
||||
.set(QmsIssueTicket::getCompleteTime, now)
|
||||
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
|
||||
.set(QmsIssueTicket::getUpdateUserName, currentUserName)
|
||||
.set(QmsIssueTicket::getUpdateTime, now)
|
||||
|
|
@ -511,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());
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ public class QmsPqcTaskRecordControllerService {
|
|||
@Resource
|
||||
private IQmsIssueTicketToDoService issueTicketToDoService;
|
||||
|
||||
@Resource
|
||||
private IQmsIssueTicketProcessService issueTicketProcessService;
|
||||
|
||||
@Resource
|
||||
private IUserService userService;
|
||||
|
||||
|
|
@ -1552,6 +1555,7 @@ public class QmsPqcTaskRecordControllerService {
|
|||
QmsPqcInspectionPoint point = pqcInspectionPointService.getById(taskRecord.getInspectionPointId());
|
||||
String stepName = point != null ? point.getStepName() : "";
|
||||
String inspectionPointName = point != null ? point.getInspectionPointName() : "";
|
||||
VUtil.trueThrowBusinessError(taskRecord.getReviewerId() == null).throwMessage("PQC工单处理人不能为空");
|
||||
|
||||
QmsIssueTicket ticket = new QmsIssueTicket()
|
||||
.setSourceType((short) 3) // PQC
|
||||
|
|
@ -1566,6 +1570,12 @@ public class QmsPqcTaskRecordControllerService {
|
|||
|
||||
issueTicketService.save(ticket);
|
||||
|
||||
QmsIssueTicketProcess ticketProcess = new QmsIssueTicketProcess()
|
||||
.setIssueTicketId(ticket.getId())
|
||||
.setHandlerUserId(taskRecord.getReviewerId())
|
||||
.setHandlerUserName(taskRecord.getReviewerName());
|
||||
issueTicketProcessService.save(ticketProcess);
|
||||
|
||||
QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(taskRecord.getReviewerId())
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
|
|
@ -21,7 +20,6 @@ public class QmsIssueTicketDispatchMultipleQO {
|
|||
/**
|
||||
* 处理人ID列表
|
||||
*/
|
||||
@NotEmpty(message = "处理人列表不能为空")
|
||||
private List<Long> handlerUserIds;
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue