parent
84df559f22
commit
9e2682981d
|
|
@ -3268,42 +3268,29 @@ public class QmsIssueTicketControllerService {
|
|||
}
|
||||
|
||||
// 负责人权限:工单状态为处理中时有审批和分配权限,有了审批状态后失去审批权限
|
||||
if (isResponsiblePerson) {
|
||||
vo.setIsReview(status != null && status == 1 && ticket.getApprovalStatus() == null);
|
||||
vo.setIsDispatch(status != null && status == 1);
|
||||
vo.setIsEdit(false);
|
||||
vo.setIsShut(false);
|
||||
}
|
||||
// 处理人权限:未提交或领导驳回重置后可编辑,处理人提交后关闭编辑权限
|
||||
else if (isHandler) {
|
||||
Short handlerApprovalStatus = myProcess.getApprovalStatus();
|
||||
vo.setIsReview(handlerApprovalStatus == null);
|
||||
vo.setIsEdit(handlerApprovalStatus == null);
|
||||
vo.setIsDispatch(false);
|
||||
vo.setIsShut(false);
|
||||
}
|
||||
// 领导权限:只有审核权限
|
||||
else if (isLeader) {
|
||||
vo.setIsReview(hasPendingLeaderReview(allProcesses, currentUserId));
|
||||
vo.setIsEdit(false);
|
||||
vo.setIsDispatch(false);
|
||||
vo.setIsShut(false);
|
||||
}
|
||||
// 创建人权限
|
||||
else if (currentUserId.equals(ticket.getCreateUserId())) {
|
||||
vo.setIsReview(false);
|
||||
vo.setIsDispatch(status != null && status == 0);
|
||||
vo.setIsEdit(false);
|
||||
// 创建人且工单状态为已完成时,有关闭权限
|
||||
vo.setIsShut(status != null && status == 2);
|
||||
}
|
||||
// 其他
|
||||
else {
|
||||
vo.setIsReview(false);
|
||||
vo.setIsDispatch(false);
|
||||
vo.setIsEdit(false);
|
||||
vo.setIsShut(false);
|
||||
}
|
||||
boolean isCreator = currentUserId.equals(ticket.getCreateUserId());
|
||||
boolean isProcessingStatus = status != null && (status == 0 || status == 1);
|
||||
boolean isCompletedStatus = status != null && status == 2;
|
||||
|
||||
boolean responsibleCanReview = isResponsiblePerson
|
||||
&& status != null
|
||||
&& status == 1
|
||||
&& ticket.getApprovalStatus() == null;
|
||||
boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus;
|
||||
|
||||
Short handlerApprovalStatus = isHandler ? myProcess.getApprovalStatus() : null;
|
||||
boolean handlerCanReview = isHandler && handlerApprovalStatus == null;
|
||||
boolean handlerCanEdit = handlerCanReview;
|
||||
|
||||
boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId);
|
||||
|
||||
boolean creatorCanDispatch = isCreator && status != null && status == 0;
|
||||
boolean creatorCanShut = isCreator && isCompletedStatus;
|
||||
|
||||
vo.setIsReview(responsibleCanReview || handlerCanReview || leaderCanReview);
|
||||
vo.setIsDispatch(responsibleCanDispatch || creatorCanDispatch);
|
||||
vo.setIsEdit(handlerCanEdit);
|
||||
vo.setIsShut(creatorCanShut);
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,16 +157,7 @@ public class QmsIssueTicketProcessControllerService {
|
|||
}
|
||||
|
||||
// 2. 通过工单ID + 当前登录人查找处理记录
|
||||
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
|
||||
.eq(QmsIssueTicketProcess::getIssueTicketId, request.getId())
|
||||
.and(w -> w
|
||||
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
|
||||
.or()
|
||||
.eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
|
||||
.or()
|
||||
.eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId))
|
||||
.last("LIMIT 1")
|
||||
.one();
|
||||
QmsIssueTicketProcess process = getCurrentUserProcess(request.getId(), currentUserId);
|
||||
|
||||
// 如果没找到,检查当前用户是否为处理人的部门负责人
|
||||
if (process == null) {
|
||||
|
|
@ -251,6 +242,25 @@ public class QmsIssueTicketProcessControllerService {
|
|||
/**
|
||||
* 领导审批统一处理(PDI和巡检共用)
|
||||
*/
|
||||
private QmsIssueTicketProcess getCurrentUserProcess(Long ticketId, Long currentUserId) {
|
||||
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
|
||||
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
|
||||
.and(w -> w
|
||||
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
|
||||
.or()
|
||||
.eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
|
||||
.or()
|
||||
.eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId))
|
||||
.list();
|
||||
if (processes.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return processes.stream()
|
||||
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
|
||||
.findFirst()
|
||||
.orElse(processes.get(0));
|
||||
}
|
||||
|
||||
private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
|
||||
LocalDateTime now, Long currentUserId, String currentUserName) {
|
||||
issueTicketToDoService.processed(ticket.getId());
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ public class QmsIssueTicketProcessMeasureControllerService {
|
|||
* 通过工单ID + 用户ID查找处理记录
|
||||
*/
|
||||
private QmsIssueTicketProcess findProcessByTicketAndUser(Long ticketId, Long userId) {
|
||||
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
|
||||
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
|
||||
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
|
||||
.and(w -> w
|
||||
.eq(QmsIssueTicketProcess::getHandlerUserId, userId)
|
||||
|
|
@ -219,12 +219,14 @@ public class QmsIssueTicketProcessMeasureControllerService {
|
|||
.eq(QmsIssueTicketProcess::getApprovalUserId, userId)
|
||||
.or()
|
||||
.eq(QmsIssueTicketProcess::getLeaderUserId, userId))
|
||||
.last("LIMIT 1")
|
||||
.one();
|
||||
if (process == null) {
|
||||
.list();
|
||||
if (processes.isEmpty()) {
|
||||
throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录");
|
||||
}
|
||||
return process;
|
||||
return processes.stream()
|
||||
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
|
||||
.findFirst()
|
||||
.orElse(processes.get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1576,13 +1576,6 @@ public class QmsPqcTaskRecordControllerService {
|
|||
.setHandlerUserName(taskRecord.getReviewerName());
|
||||
issueTicketProcessService.save(ticketProcess);
|
||||
|
||||
QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(taskRecord.getReviewerId())
|
||||
.setHasProcessed(false)
|
||||
.setIsRead(false);
|
||||
issueTicketToDoService.save(ticketTodo);
|
||||
|
||||
// 2. 任务总体合格时,仅生成工单,不创建重检任务
|
||||
if (!Boolean.FALSE.equals(taskRecord.getEnable())) {
|
||||
return ticket.getId();
|
||||
|
|
|
|||
Loading…
Reference in New Issue