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

This commit is contained in:
曹鹏飞 2026-05-13 14:21:57 +08:00
commit fc491bcac0
2 changed files with 76 additions and 9 deletions

View File

@ -1491,8 +1491,8 @@ public class QmsIssueTicketControllerService {
List<QmsPdiTicketMyDetailVO.MeasureVO> permanentMeasures = new ArrayList<>();
// 查询字典项临时措施和永久措施的类型ID
Long temporaryTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures");
Long permanentTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures");
Long temporaryTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施");
Long permanentTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施");
for (QmsIssueTicketProcess process : processes) {
// 提取根本原因
@ -1658,6 +1658,49 @@ public class QmsIssueTicketControllerService {
vo.setTemporaryMeasures(temporaryMeasures);
vo.setPermanentMeasures(permanentMeasures);
// 填充处理记录列表含处理人信息
List<QmsPdiTicketMyDetailVO.ProcessVO> processVOs = new ArrayList<>();
for (QmsIssueTicketProcess process : processes) {
QmsPdiTicketMyDetailVO.ProcessVO pvo = new QmsPdiTicketMyDetailVO.ProcessVO();
pvo.setId(process.getId());
pvo.setHandlerUserId(process.getHandlerUserId());
pvo.setHandlerUserName(process.getHandlerUserName());
pvo.setRootCause(process.getRootCause());
pvo.setTaskResultIds(process.getTaskResultIds());
pvo.setApprovalStatus(process.getApprovalStatus());
pvo.setApprovalOpinion(process.getApprovalOpinion());
pvo.setApprovalUserId(process.getApprovalUserId());
pvo.setApprovalUserName(process.getApprovalUserName());
pvo.setApprovalTime(process.getApprovalTime());
pvo.setProcessTime(process.getApprovalTime());
pvo.setLeaderApprovalResult(process.getLeaderApprovalResult());
pvo.setLeaderApprovalOpinion(process.getLeaderApprovalOpinion());
pvo.setLeaderUserId(process.getLeaderUserId());
pvo.setLeaderUserName(process.getLeaderUserName());
pvo.setLeaderApprovalTime(process.getLeaderApprovalTime());
// 查询该处理记录的措施列表
List<QmsIssueTicketProcessMeasure> processMeasures = issueTicketProcessMeasureService.lambdaQuery()
.eq(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, process.getId())
.list();
List<QmsPdiTicketMyDetailVO.MeasureVO> measureVOs = new ArrayList<>();
for (QmsIssueTicketProcessMeasure m : processMeasures) {
QmsPdiTicketMyDetailVO.MeasureVO mvo = new QmsPdiTicketMyDetailVO.MeasureVO();
mvo.setId(m.getId());
mvo.setMeasureTypeId(m.getMeasureTypeId());
mvo.setMeasureContent(m.getMeasureContent());
mvo.setChargeUser(m.getChargeUser());
mvo.setPlanDate(m.getPlanDate());
mvo.setConfirmDate(m.getConfirmDate());
mvo.setRemark(m.getRemark());
measureVOs.add(mvo);
}
pvo.setMeasures(measureVOs);
processVOs.add(pvo);
}
vo.setProcesses(processVOs);
// 构建相关人员签字按部门只返回已审批的
Map<String, QmsPdiTicketMyDetailVO.SignatureInfo> signatures = buildSignatures(processes);
vo.setSignatures(signatures);
@ -1973,8 +2016,8 @@ public class QmsIssueTicketControllerService {
}
// 查询纠正措施
Long temporaryTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures");
Long permanentTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures");
Long temporaryTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施");
Long permanentTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施");
List<QmsInspectionTicketDetailVO.MeasureVO> temporaryMeasures = new ArrayList<>();
List<QmsInspectionTicketDetailVO.MeasureVO> permanentMeasures = new ArrayList<>();
@ -2021,11 +2064,29 @@ public class QmsIssueTicketControllerService {
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
.list();
// 判断是否为领导1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人
boolean isLeader = allProcesses.stream()
.anyMatch(p -> currentUserId.equals(p.getLeaderUserId()));
if (!isLeader) {
// 检查当前用户是否为任一处理人的部门负责人
for (QmsIssueTicketProcess p : allProcesses) {
if (p.getHandlerUserId() == null) continue;
UserInterior handlerInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, p.getHandlerUserId())
.one();
if (handlerInterior != null && handlerInterior.getDeptId() != null) {
Department dept = departmentService.getById(handlerInterior.getDeptId());
if (dept != null && currentUserId.equals(dept.getHeadUserId())) {
isLeader = true;
break;
}
}
}
}
// isEdit处理人或领导为true
boolean isHandler = allProcesses.stream()
.anyMatch(p -> currentUserId.equals(p.getHandlerUserId()));
boolean isLeader = allProcesses.stream()
.anyMatch(p -> currentUserId.equals(p.getLeaderUserId()));
vo.setIsEdit(isHandler || isLeader);
Short status = ticket.getStatus();
@ -2037,7 +2098,7 @@ public class QmsIssueTicketControllerService {
// 工单表审批人isReview=falseisDispatch在处理中到已完成之间
vo.setIsReview(false);
vo.setIsDispatch(status != null && status == 1);
} else if (allProcesses.stream().anyMatch(p -> currentUserId.equals(p.getLeaderUserId()))) {
} else if (isLeader) {
// 上级领导isReview=trueisDispatch=false
vo.setIsReview(true);
vo.setIsDispatch(false);

View File

@ -192,7 +192,10 @@ public class QmsIssueTicketProcessMeasureControllerService {
// 保存临时措施
if (CollectionUtil.isNotEmpty(temporaryMeasures)) {
Long tempTypeId = dictionaryItemService.getIdByCode("MeasureType", "TemporaryCorrectiveMeasures");
Long tempTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施");
if (tempTypeId == null) {
throw new NflgException(STATE.BusinessError, "字典【工单解决措施-临时纠正措施】不存在");
}
for (QmsIssueTicketProcessDraftQO.MeasureItem item : temporaryMeasures) {
if (StrUtil.isBlank(item.getMeasureContent())) continue;
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()
@ -209,7 +212,10 @@ public class QmsIssueTicketProcessMeasureControllerService {
// 保存永久措施
if (CollectionUtil.isNotEmpty(permanentMeasures)) {
Long permTypeId = dictionaryItemService.getIdByCode("MeasureType", "PermanentCorrectiveMeasures");
Long permTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施");
if (permTypeId == null) {
throw new NflgException(STATE.BusinessError, "字典【工单解决措施-永久纠正措施】不存在");
}
for (QmsIssueTicketProcessDraftQO.MeasureItem item : permanentMeasures) {
if (StrUtil.isBlank(item.getMeasureContent())) continue;
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()