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