巡检工单权限修改
This commit is contained in:
parent
a50e2f10d6
commit
f96613cdab
|
|
@ -237,7 +237,7 @@ public class QmsIssueTicketControllerService {
|
||||||
// 6. 设置负责人信息,未分派处理人前保持待流转
|
// 6. 设置负责人信息,未分派处理人前保持待流转
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
.eq(QmsIssueTicket::getId, request.getId())
|
.eq(QmsIssueTicket::getId, request.getId())
|
||||||
.set(QmsIssueTicket::getStatus, (short) 0)
|
.set(QmsIssueTicket::getStatus, (short) 5)
|
||||||
.set(QmsIssueTicket::getApprovalUserId, request.getHandlerUserId())
|
.set(QmsIssueTicket::getApprovalUserId, request.getHandlerUserId())
|
||||||
.set(QmsIssueTicket::getApprovalUserName, handlerUser.getUserName())
|
.set(QmsIssueTicket::getApprovalUserName, handlerUser.getUserName())
|
||||||
.set(QmsIssueTicket::getApprovalTime, LocalDateTime.now())
|
.set(QmsIssueTicket::getApprovalTime, LocalDateTime.now())
|
||||||
|
|
@ -443,18 +443,20 @@ public class QmsIssueTicketControllerService {
|
||||||
throw new NflgException(STATE.BusinessError, "只能分派巡检工单");
|
throw new NflgException(STATE.BusinessError, "只能分派巡检工单");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean firstChargeReview = Objects.equals(ticket.getStatus(), (short) 5);
|
||||||
|
boolean redispatchAfterHandlerReject = Objects.equals(ticket.getStatus(), (short) 1);
|
||||||
|
|
||||||
Short approvalStatus = request.getApprovalStatus();
|
Short approvalStatus = request.getApprovalStatus();
|
||||||
if (approvalStatus == null) {
|
if (approvalStatus == null) {
|
||||||
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getStatus(), (short) 0))
|
VUtil.trueThrowBusinessError(!firstChargeReview && !redispatchAfterHandlerReject)
|
||||||
.throwMessage("审批状态不能为空");
|
.throwMessage("当前工单状态不允许分派");
|
||||||
approvalStatus = 0;
|
approvalStatus = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
issueTicketToDoService.processed(ticket.getId());
|
issueTicketToDoService.processed(ticket.getId());
|
||||||
|
|
||||||
// 3. 根据审批状态分支处理
|
|
||||||
if (approvalStatus == 1) {
|
if (approvalStatus == 1) {
|
||||||
// 驳回:不创建处理记录,巡检工单直接报废
|
VUtil.trueThrowBusinessError(!firstChargeReview).throwMessage("当前工单状态不允许负责人驳回");
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
.eq(QmsIssueTicket::getId, ticket.getId())
|
.eq(QmsIssueTicket::getId, ticket.getId())
|
||||||
.set(QmsIssueTicket::getStatus, (short) 4)
|
.set(QmsIssueTicket::getStatus, (short) 4)
|
||||||
|
|
@ -467,11 +469,12 @@ public class QmsIssueTicketControllerService {
|
||||||
.set(QmsIssueTicket::getUpdateTime, now)
|
.set(QmsIssueTicket::getUpdateTime, now)
|
||||||
.update();
|
.update();
|
||||||
} else {
|
} else {
|
||||||
// 通过:按现有流程处理
|
if (firstChargeReview) {
|
||||||
VUtil.trueThrowBusinessError(request.getIncidentType() == null)
|
VUtil.trueThrowBusinessError(request.getIncidentType() == null)
|
||||||
.throwMessage("事件类型不能为空");
|
.throwMessage("事件类型不能为空");
|
||||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getExceptionCode()))
|
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getExceptionCode()))
|
||||||
.throwMessage("异常代码不能为空");
|
.throwMessage("异常代码不能为空");
|
||||||
|
}
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getHandlerUserIds()))
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getHandlerUserIds()))
|
||||||
.throwMessage("处理人列表不能为空");
|
.throwMessage("处理人列表不能为空");
|
||||||
|
|
||||||
|
|
@ -480,13 +483,12 @@ public class QmsIssueTicketControllerService {
|
||||||
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
|
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新工单审批状态和意见
|
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
.eq(QmsIssueTicket::getId, ticket.getId())
|
.eq(QmsIssueTicket::getId, ticket.getId())
|
||||||
.set(QmsIssueTicket::getApprovalStatus, approvalStatus)
|
.set(QmsIssueTicket::getApprovalStatus, approvalStatus)
|
||||||
.set(QmsIssueTicket::getIncidentType, request.getIncidentType())
|
.set(request.getIncidentType() != null, QmsIssueTicket::getIncidentType, request.getIncidentType())
|
||||||
.set(QmsIssueTicket::getExceptionCode, request.getExceptionCode())
|
.set(StrUtil.isNotBlank(request.getExceptionCode()), QmsIssueTicket::getExceptionCode, request.getExceptionCode())
|
||||||
.set(QmsIssueTicket::getIncidentConsequence, request.getIncidentConsequence())
|
.set(request.getIncidentConsequence() != null, QmsIssueTicket::getIncidentConsequence, request.getIncidentConsequence())
|
||||||
.set(request.getApprovalOpinion() != null,
|
.set(request.getApprovalOpinion() != null,
|
||||||
QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion())
|
QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion())
|
||||||
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
|
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
|
||||||
|
|
@ -531,8 +533,7 @@ public class QmsIssueTicketControllerService {
|
||||||
// 批量推送待办消息
|
// 批量推送待办消息
|
||||||
issueTicketToDoService.saveBatch(todoItems);
|
issueTicketToDoService.saveBatch(todoItems);
|
||||||
|
|
||||||
// 如果工单状态是待流转(0),更新为处理中(1)
|
if (firstChargeReview) {
|
||||||
if (ticket.getStatus() != null && ticket.getStatus() == 0) {
|
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
.eq(QmsIssueTicket::getId, ticket.getId())
|
.eq(QmsIssueTicket::getId, ticket.getId())
|
||||||
.set(QmsIssueTicket::getStatus, (short) 1)
|
.set(QmsIssueTicket::getStatus, (short) 1)
|
||||||
|
|
@ -1119,7 +1120,7 @@ public class QmsIssueTicketControllerService {
|
||||||
: StrUtil.join(",", request.getImages().stream().map(FileUploadVO::getId).toList())
|
: StrUtil.join(",", request.getImages().stream().map(FileUploadVO::getId).toList())
|
||||||
)
|
)
|
||||||
.setRemark(request.getRemark())
|
.setRemark(request.getRemark())
|
||||||
.setStatus((short) 0)
|
.setStatus((short) 5)
|
||||||
.setApprovalUserId(request.getHandlerUserId())
|
.setApprovalUserId(request.getHandlerUserId())
|
||||||
.setApprovalUserName(handlerUser.getUserName())
|
.setApprovalUserName(handlerUser.getUserName())
|
||||||
.setApprovalTime(now)
|
.setApprovalTime(now)
|
||||||
|
|
@ -1264,7 +1265,7 @@ public class QmsIssueTicketControllerService {
|
||||||
Long pendingCount = issueTicketService.lambdaQuery()
|
Long pendingCount = issueTicketService.lambdaQuery()
|
||||||
.eq(QmsIssueTicket::getSourceType, (short) 2)
|
.eq(QmsIssueTicket::getSourceType, (short) 2)
|
||||||
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
|
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
|
||||||
.eq(QmsIssueTicket::getStatus, (short) 0)
|
.in(QmsIssueTicket::getStatus, Arrays.asList((short) 0, (short) 5))
|
||||||
.count();
|
.count();
|
||||||
|
|
||||||
Long processingCount = issueTicketService.lambdaQuery()
|
Long processingCount = issueTicketService.lambdaQuery()
|
||||||
|
|
@ -3439,29 +3440,34 @@ public class QmsIssueTicketControllerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 负责人权限:工单状态为处理中时有审批和分配权限,有了审批状态后失去审批权限
|
// 负责人权限:工单状态为处理中时有审批和分配权限,有了审批状态后失去审批权限
|
||||||
boolean isProcessingStatus = status != null && (status == 0 || status == 1);
|
boolean chargeCanReview = isResponsiblePerson && Objects.equals(status, (short) 5);
|
||||||
|
boolean responsibleCanDispatch = isResponsiblePerson
|
||||||
boolean responsibleCanReview = isResponsiblePerson
|
&& Objects.equals(status, (short) 1)
|
||||||
&& status != null
|
&& issueTicketToDoService.lambdaQuery()
|
||||||
&& status == 1
|
.eq(QmsIssueTicketToDo::getTicketId, ticket.getId())
|
||||||
&& ticket.getApprovalStatus() == null;
|
.eq(QmsIssueTicketToDo::getHandlerUserId, currentUserId)
|
||||||
boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus;
|
.eq(QmsIssueTicketToDo::getHasProcessed, false)
|
||||||
|
.exists();
|
||||||
|
|
||||||
boolean handlerCanReview = allProcesses.stream()
|
boolean handlerCanReview = allProcesses.stream()
|
||||||
|
.filter(p -> currentUserId.equals(p.getHandlerUserId()))
|
||||||
|
.anyMatch(p -> p.getApprovalStatus() == null
|
||||||
|
&& p.getLeaderApprovalResult() == null
|
||||||
|
&& p.getApprovalUserId() == null);
|
||||||
|
boolean handlerCanEdit = allProcesses.stream()
|
||||||
.filter(p -> currentUserId.equals(p.getHandlerUserId()))
|
.filter(p -> currentUserId.equals(p.getHandlerUserId()))
|
||||||
.anyMatch(p -> p.getApprovalStatus() == null && p.getLeaderApprovalResult() == null);
|
.anyMatch(p -> p.getApprovalStatus() == null && p.getLeaderApprovalResult() == null);
|
||||||
boolean handlerCanEdit = handlerCanReview;
|
|
||||||
|
|
||||||
boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId);
|
boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId);
|
||||||
|
|
||||||
boolean creatorCanDispatch = isCreator && status != null && status == 0;
|
boolean creatorCanDispatch = isCreator && status != null && status == 0;
|
||||||
boolean creatorCanShut = isCreator && !Objects.equals(ticket.getSourceType(), (short) 2) && isCompletedStatus;
|
|
||||||
boolean responsibleCanShut = isResponsiblePerson && isCompletedStatus;
|
boolean responsibleCanShut = isResponsiblePerson && isCompletedStatus;
|
||||||
|
|
||||||
vo.setIsReview(responsibleCanReview || handlerCanReview || leaderCanReview);
|
vo.setIsChargeReview(chargeCanReview);
|
||||||
|
vo.setIsReview(handlerCanReview || leaderCanReview);
|
||||||
vo.setIsDispatch((responsibleCanDispatch && !leaderCanReview) || creatorCanDispatch);
|
vo.setIsDispatch((responsibleCanDispatch && !leaderCanReview) || creatorCanDispatch);
|
||||||
vo.setIsEdit(handlerCanEdit);
|
vo.setIsEdit(handlerCanEdit);
|
||||||
vo.setIsShut(creatorCanShut || responsibleCanShut);
|
vo.setIsShut(responsibleCanShut);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
@ -3484,8 +3490,6 @@ public class QmsIssueTicketControllerService {
|
||||||
if (inspectionTicket) {
|
if (inspectionTicket) {
|
||||||
VUtil.trueThrowBusinessError(!currentUserId.equals(ticket.getApprovalUserId()))
|
VUtil.trueThrowBusinessError(!currentUserId.equals(ticket.getApprovalUserId()))
|
||||||
.throwMessage("只有工单负责人才能审核");
|
.throwMessage("只有工单负责人才能审核");
|
||||||
VUtil.trueThrowBusinessError(request.getCreateApproval() != 0)
|
|
||||||
.throwMessage("巡检工单只允许关闭");
|
|
||||||
} else {
|
} else {
|
||||||
VUtil.trueThrowBusinessError(!currentUserId.equals(ticket.getCreateUserId()))
|
VUtil.trueThrowBusinessError(!currentUserId.equals(ticket.getCreateUserId()))
|
||||||
.throwMessage("只有工单创建人才能审核");
|
.throwMessage("只有工单创建人才能审核");
|
||||||
|
|
@ -3510,15 +3514,7 @@ public class QmsIssueTicketControllerService {
|
||||||
.set(QmsIssueTicket::getUpdateTime, now)
|
.set(QmsIssueTicket::getUpdateTime, now)
|
||||||
.update();
|
.update();
|
||||||
|
|
||||||
if (Objects.equals(ticket.getSourceType(), (short) 1) || Objects.equals(ticket.getSourceType(), (short) 3)) {
|
|
||||||
issueTicketToDoService.processed(ticket.getId());
|
issueTicketToDoService.processed(ticket.getId());
|
||||||
} else {
|
|
||||||
issueTicketToDoService.lambdaUpdate()
|
|
||||||
.eq(QmsIssueTicketToDo::getTicketId, ticket.getId())
|
|
||||||
.eq(QmsIssueTicketToDo::getHasProcessed, false)
|
|
||||||
.set(QmsIssueTicketToDo::getHasProcessed, true)
|
|
||||||
.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
// PDI工单关闭时:创建新任务单,复制内容,不合格项改为合格
|
// PDI工单关闭时:创建新任务单,复制内容,不合格项改为合格
|
||||||
if (ticket.getSourceType() != null && ticket.getSourceType() == 1 && ticket.getSourceId() != null) {
|
if (ticket.getSourceType() != null && ticket.getSourceType() == 1 && ticket.getSourceId() != null) {
|
||||||
|
|
@ -3566,7 +3562,7 @@ public class QmsIssueTicketControllerService {
|
||||||
.set(QmsIssueTicket::getUpdateTime, now)
|
.set(QmsIssueTicket::getUpdateTime, now)
|
||||||
.update();
|
.update();
|
||||||
|
|
||||||
if (Objects.equals(ticket.getSourceType(), (short) 1) || Objects.equals(ticket.getSourceType(), (short) 3)) {
|
if (inspectionTicket || Objects.equals(ticket.getSourceType(), (short) 1) || Objects.equals(ticket.getSourceType(), (short) 3)) {
|
||||||
issueTicketToDoService.processed(ticket.getId());
|
issueTicketToDoService.processed(ticket.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,7 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
|
|
||||||
if (Objects.equals(ticket.getSourceType(), (short) 2)
|
if (Objects.equals(ticket.getSourceType(), (short) 2)
|
||||||
&& Objects.equals(ticket.getApprovalUserId(), currentUserId)
|
&& Objects.equals(ticket.getApprovalUserId(), currentUserId)
|
||||||
|
&& Objects.equals(ticket.getStatus(), (short) 5)
|
||||||
&& Objects.equals(request.getApprovalStatus(), (short) 1)) {
|
&& Objects.equals(request.getApprovalStatus(), (short) 1)) {
|
||||||
rejectInspectionByResponsible(request, ticket, now, currentUserId, currentUserName);
|
rejectInspectionByResponsible(request, ticket, now, currentUserId, currentUserName);
|
||||||
return;
|
return;
|
||||||
|
|
@ -327,6 +328,9 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
|
|
||||||
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) {
|
||||||
|
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getStatus(), (short) 5))
|
||||||
|
.throwMessage("当前工单状态不允许负责人驳回");
|
||||||
|
|
||||||
issueTicketToDoService.processed(ticket.getId());
|
issueTicketToDoService.processed(ticket.getId());
|
||||||
|
|
||||||
issueTicketService.lambdaUpdate()
|
issueTicketService.lambdaUpdate()
|
||||||
|
|
@ -452,11 +456,13 @@ public class QmsIssueTicketProcessControllerService {
|
||||||
.set(QmsIssueTicket::getUpdateTime, now)
|
.set(QmsIssueTicket::getUpdateTime, now)
|
||||||
.update();
|
.update();
|
||||||
|
|
||||||
// 推送消息给工单创建人
|
Long nextTodoUserId = Objects.equals(ticket.getSourceType(), (short) 2)
|
||||||
if (ticket.getCreateUserId() != null) {
|
? ticket.getApprovalUserId()
|
||||||
|
: ticket.getCreateUserId();
|
||||||
|
if (nextTodoUserId != null) {
|
||||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||||
.setTicketId(issueTicketId)
|
.setTicketId(issueTicketId)
|
||||||
.setHandlerUserId(ticket.getCreateUserId());
|
.setHandlerUserId(nextTodoUserId);
|
||||||
issueTicketToDoService.save(todoItem);
|
issueTicketToDoService.save(todoItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class QmsIssueTicketSearchQO extends PageQO {
|
||||||
private Short ticketType;
|
private Short ticketType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
|
||||||
public class QmsIssueTicketTabletSearchQO extends PageQO {
|
public class QmsIssueTicketTabletSearchQO extends PageQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废(可选)
|
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核(可选)
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ public class QmsInspectionTicketDetailVO {
|
||||||
*/
|
*/
|
||||||
private Boolean isReview;
|
private Boolean isReview;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否有负责人审核权限
|
||||||
|
*/
|
||||||
|
private Boolean isChargeReview;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有分派权限
|
* 是否有分派权限
|
||||||
*/
|
*/
|
||||||
|
|
@ -78,7 +83,7 @@ public class QmsInspectionTicketDetailVO {
|
||||||
private Long directorId;
|
private Long directorId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 工单状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class QmsIssueTicketDetailVO {
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public class QmsIssueTicketTabletPageData extends PageData<QmsIssueTicketVO> {
|
||||||
private Long totalCount;
|
private Long totalCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 待处理数(status=0)
|
* 待处理数(status=0或5)
|
||||||
*/
|
*/
|
||||||
private Long pendingCount;
|
private Long pendingCount;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class QmsIssueTicketToDoVO {
|
||||||
private LocalDateTime completeTime;
|
private LocalDateTime completeTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ public class QmsIssueTicketVO {
|
||||||
private String incidentLocation;
|
private String incidentLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ public class QmsIssueTicket implements Serializable {
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废
|
* 状态:0=待流转,1=处理中,2=已完成,3=已关闭,4=报废,5=待审核
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue