Merge remote-tracking branch '惠信/qms/develop' into qms/develop

This commit is contained in:
曹鹏飞 2026-06-15 11:48:19 +08:00
commit 4450b45f96
4 changed files with 52 additions and 13 deletions

View File

@ -2686,6 +2686,7 @@ public class QmsIssueTicketControllerService {
vo.setIsDispatch(ticket.getStatus() != null && (ticket.getStatus() == 0 || ticket.getStatus() == 1));
vo.setIsReview(ticket.getStatus() != null && ticket.getStatus() == 2);
vo.setIsEdit(false);
vo.setIsShut(ticket.getStatus() != null && ticket.getStatus() == 2);
} else if (isHandler && process != null) {
// 处理人
// - isDispatch=false处理人无分派权限
@ -2694,11 +2695,13 @@ public class QmsIssueTicketControllerService {
vo.setIsDispatch(false);
vo.setIsReview(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null);
vo.setIsEdit(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null);
vo.setIsShut(false);
} else {
// 其他角色无权限
vo.setIsDispatch(false);
vo.setIsReview(false);
vo.setIsEdit(false);
vo.setIsShut(false);
}
return vo;
@ -3288,7 +3291,7 @@ public class QmsIssueTicketControllerService {
boolean creatorCanShut = isCreator && isCompletedStatus;
vo.setIsReview(responsibleCanReview || handlerCanReview || leaderCanReview);
vo.setIsDispatch(responsibleCanDispatch || creatorCanDispatch);
vo.setIsDispatch((responsibleCanDispatch && !leaderCanReview) || creatorCanDispatch);
vo.setIsEdit(handlerCanEdit);
vo.setIsShut(creatorCanShut);

View File

@ -500,11 +500,21 @@ public class QmsIssueTicketProcessControllerService {
// 3. 根据审批状态处理
if (approvalStatus == 1) {
// 驳回推送给工单创建人
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(ticket.getCreateUserId());
issueTicketToDoService.save(todoItem);
boolean allHandlersRejected = isAllPqcHandlersRejected(ticket.getId());
if (allHandlersRejected) {
issueTicketService.lambdaUpdate()
.eq(QmsIssueTicket::getId, ticket.getId())
.set(QmsIssueTicket::getStatus, (short) 0)
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
.set(QmsIssueTicket::getUpdateUserName, currentUserName)
.set(QmsIssueTicket::getUpdateTime, now)
.update();
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(ticket.getCreateUserId());
issueTicketToDoService.save(todoItem);
}
} else if (approvalStatus == 0) {
// 通过校验措施临时措施或永久措施至少填一个
boolean hasMeasures = checkPqcMeasures(process.getId());
@ -594,4 +604,30 @@ public class QmsIssueTicketProcessControllerService {
.allMatch(list -> list.stream()
.anyMatch(p -> p.getApprovalTime() != null || currentUserId.equals(p.getHandlerUserId())));
}
private boolean isAllPqcHandlersRejected(Long ticketId) {
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, ticketId)
.list();
List<QmsIssueTicketProcess> dispatchedProcesses = processes.stream()
.filter(p -> StrUtil.isNotBlank(p.getTaskResultIds()))
.toList();
List<QmsIssueTicketProcess> effectiveProcesses = dispatchedProcesses.isEmpty()
? processes
: dispatchedProcesses;
Map<Long, List<QmsIssueTicketProcess>> processMap = effectiveProcesses.stream()
.filter(p -> p.getHandlerUserId() != null)
.collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId));
if (processMap.isEmpty()) {
return false;
}
return processMap
.values()
.stream()
.allMatch(list -> list.stream()
.anyMatch(p -> Objects.equals(p.getApprovalStatus(), (short) 1)));
}
}

View File

@ -64,9 +64,6 @@ public class QmsPqcTaskRecordControllerService {
@Resource
private IQmsIssueTicketToDoService issueTicketToDoService;
@Resource
private IQmsIssueTicketProcessService issueTicketProcessService;
@Resource
private IUserService userService;
@ -1570,11 +1567,12 @@ public class QmsPqcTaskRecordControllerService {
issueTicketService.save(ticket);
QmsIssueTicketProcess ticketProcess = new QmsIssueTicketProcess()
.setIssueTicketId(ticket.getId())
QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(taskRecord.getReviewerId())
.setHandlerUserName(taskRecord.getReviewerName());
issueTicketProcessService.save(ticketProcess);
.setHasProcessed(false)
.setIsRead(false);
issueTicketToDoService.save(ticketTodo);
// 2. 任务总体合格时仅生成工单不创建重检任务
if (!Boolean.FALSE.equals(taskRecord.getEnable())) {

View File

@ -31,6 +31,8 @@ public class QmsPqcTicketMyDetailVO {
*/
private Boolean isEdit;
private Boolean isShut;
/**
* 来源类型3=PQC
*/