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