Compare commits

...

4 Commits

Author SHA1 Message Date
funny 24f9701bda 工单详情接口修改 2026-05-13 14:38:41 +08:00
funny 7a4bcb01b0 Merge remote-tracking branch 'origin/qms/develop' into qms/develop 2026-05-13 14:27:40 +08:00
funny 81822fba85 工单详情接口修改 2026-05-13 14:27:23 +08:00
funny c6772e6b53 工单详情接口修改 2026-05-13 14:18:46 +08:00
2 changed files with 31 additions and 19 deletions

View File

@ -169,6 +169,11 @@ public class QmsIssueTicketControllerService {
String currentUserName = UserUtil.getUserName(); String currentUserName = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// 校验不能分配给自己
if (request.getHandlerUserIds().contains(currentUserId)) {
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
}
// 1. 校验工单存在 // 1. 校验工单存在
QmsIssueTicket ticket = issueTicketService.getById(request.getId()); QmsIssueTicket ticket = issueTicketService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
@ -869,6 +874,13 @@ public class QmsIssueTicketControllerService {
String userName = UserUtil.getUserName(); String userName = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// 校验不能分配给自己
boolean containsSelf = request.getHandlers().stream()
.anyMatch(h -> userId.equals(h.getHandlerUserId()));
if (containsSelf) {
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
}
// 查询任务记录 // 查询任务记录
QmsPdiTaskRecord taskRecord = pdiTaskRecordService.getById(request.getTaskRecordId()); QmsPdiTaskRecord taskRecord = pdiTaskRecordService.getById(request.getTaskRecordId());
if (Objects.isNull(taskRecord)) { if (Objects.isNull(taskRecord)) {
@ -1747,14 +1759,9 @@ public class QmsIssueTicketControllerService {
.anyMatch(p -> currentUserId.equals(p.getLeaderUserId())); .anyMatch(p -> currentUserId.equals(p.getLeaderUserId()));
if (isLeader) { if (isLeader) {
// 领导isReview=true // 领导仅有审核权限无编辑权限
vo.setIsReview(true); vo.setIsReview(true);
// isEdit领导未审批leaderApprovalResult为null且处理人已提交approvalStatus不为null时有编辑权限 vo.setIsEdit(false);
// 处理人再次提交后leaderApprovalResult被重置为null领导重新获得编辑权限
boolean leaderCanEdit = allProcesses.stream()
.filter(p -> currentUserId.equals(p.getLeaderUserId()))
.anyMatch(p -> p.getLeaderApprovalResult() == null && p.getApprovalStatus() != null);
vo.setIsEdit(leaderCanEdit);
} else { } else {
// 处理人/审批人 // 处理人/审批人
boolean hasUnapproved = allProcesses.stream() boolean hasUnapproved = allProcesses.stream()
@ -2084,27 +2091,23 @@ public class QmsIssueTicketControllerService {
} }
} }
// isEdit处理人或领导为true // isEdit处理人为true领导只有审核权限
boolean isHandler = allProcesses.stream() boolean isHandler = allProcesses.stream()
.anyMatch(p -> currentUserId.equals(p.getHandlerUserId())); .anyMatch(p -> currentUserId.equals(p.getHandlerUserId()));
vo.setIsEdit(isHandler || isLeader); vo.setIsEdit(isHandler);
// isReview领导始终有审核权限
vo.setIsReview(isLeader);
// isDispatch
Short status = ticket.getStatus(); Short status = ticket.getStatus();
if (currentUserId.equals(ticket.getCreateUserId())) { if (currentUserId.equals(ticket.getCreateUserId())) {
// 创建人isReview=falseisDispatch仅在待流转状态 // 创建人isDispatch仅在待流转状态
vo.setIsReview(false);
vo.setIsDispatch(status != null && status == 0); vo.setIsDispatch(status != null && status == 0);
} else if (currentUserId.equals(ticket.getApprovalUserId())) { } else if (currentUserId.equals(ticket.getApprovalUserId())) {
// 工单表审批人isReview=falseisDispatch在处理中到已完成之间 // 工单表审批人isDispatch在处理中状态
vo.setIsReview(false);
vo.setIsDispatch(status != null && status == 1); vo.setIsDispatch(status != null && status == 1);
} else if (isLeader) {
// 上级领导isReview=trueisDispatch=false
vo.setIsReview(true);
vo.setIsDispatch(false);
} else { } else {
// 处理人/审批人工单处理表全false
vo.setIsReview(false);
vo.setIsDispatch(false); vo.setIsDispatch(false);
} }

View File

@ -54,6 +54,15 @@ public class QmsIssueTicketProcessControllerService {
* 新增工单处理同步 Controller 直接调用 * 新增工单处理同步 Controller 直接调用
*/ */
public void add(QmsIssueTicketProcessAddQO request) { public void add(QmsIssueTicketProcessAddQO request) {
Long currentUserId = UserUtil.getUserId();
// 校验不能分配给自己
boolean containsSelf = request.getHandlers().stream()
.anyMatch(h -> currentUserId.equals(h.getHandlerUserId()));
if (containsSelf) {
throw new NflgException(STATE.BusinessError, "不能将工单分配给自己");
}
// 校验工单是否存在 // 校验工单是否存在
QmsIssueTicket ticket = issueTicketService.getById(request.getIssueTicketId()); QmsIssueTicket ticket = issueTicketService.getById(request.getIssueTicketId());
if (ticket == null) { if (ticket == null) {