pqc工单方法修改
This commit is contained in:
parent
e604735ecb
commit
5a5e96f8ec
|
|
@ -162,7 +162,7 @@ public class QmsIssueTicketController extends BaseController {
|
|||
|
||||
/**
|
||||
* 查询PQC工单详情(本人相关)
|
||||
* 校验当前登录人在处理记录中为处理人,仅返回相关的处理记录及措施
|
||||
* 创建人可查看全部问题明细和措施,处理人仅查看分配给自己的问题明细和措施
|
||||
*/
|
||||
@GetMapping("detail/my-pqc-ticket")
|
||||
public ApiResult<QmsPqcTicketMyDetailVO> myPqcTicketDetail(@NotNull(message = "ID不能为空") Long id) {
|
||||
|
|
|
|||
|
|
@ -566,7 +566,7 @@ public class QmsIssueTicketControllerService {
|
|||
.setIncidentDescription(incidentDescription)
|
||||
.setRemark(request.getRemark())
|
||||
.setUnqualifiedQty(unqualifiedDetails.size())
|
||||
.setStatus((short) 0)
|
||||
.setStatus((short) 1)
|
||||
.setCreateUserId(userId)
|
||||
.setCreateUserName(userName)
|
||||
.setCreateTime(now)
|
||||
|
|
@ -1862,7 +1862,32 @@ public class QmsIssueTicketControllerService {
|
|||
// 判断是否为工单创建者
|
||||
boolean isCreator = ticket.getCreateUserId() != null && ticket.getCreateUserId().equals(currentUserId);
|
||||
|
||||
List<QmsIssueTicketProcess> processes;
|
||||
List<QmsIssueTicketProcess> processes = new ArrayList<>();
|
||||
if (CollectionUtil.isNotEmpty(processes)) {
|
||||
Long temporaryTypeId = dictionaryItemService.getId("工单解决措施", "临时纠正措施");
|
||||
Long permanentTypeId = dictionaryItemService.getId("工单解决措施", "永久纠正措施");
|
||||
List<Long> processIds = processes.stream()
|
||||
.map(QmsIssueTicketProcess::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (temporaryTypeId != null && CollectionUtil.isNotEmpty(processIds)) {
|
||||
List<QmsIssueTicketProcessMeasure> temporaryMeasures = issueTicketProcessMeasureService.lambdaQuery()
|
||||
.in(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, processIds)
|
||||
.eq(QmsIssueTicketProcessMeasure::getMeasureTypeId, temporaryTypeId)
|
||||
.list();
|
||||
convertToMeasureVO(temporaryMeasures);
|
||||
}
|
||||
|
||||
if (permanentTypeId != null && CollectionUtil.isNotEmpty(processIds)) {
|
||||
List<QmsIssueTicketProcessMeasure> permanentMeasures = issueTicketProcessMeasureService.lambdaQuery()
|
||||
.in(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, processIds)
|
||||
.eq(QmsIssueTicketProcessMeasure::getMeasureTypeId, permanentTypeId)
|
||||
.list();
|
||||
convertToMeasureVO(permanentMeasures);
|
||||
}
|
||||
}
|
||||
|
||||
if (isCreator) {
|
||||
// 工单创建者:返回全部处理记录
|
||||
processes = issueTicketProcessService.lambdaQuery()
|
||||
|
|
@ -2331,12 +2356,17 @@ public class QmsIssueTicketControllerService {
|
|||
|
||||
// 6. 查询问题详情(不合格项)
|
||||
List<QmsPqcTicketMyDetailVO.PqcIssueDetailVO> issueDetails = new ArrayList<>();
|
||||
|
||||
// 查询当前登录人的处理记录
|
||||
QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery()
|
||||
List<QmsIssueTicketProcess> processes = isCreator
|
||||
? issueTicketProcessService.lambdaQuery()
|
||||
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
|
||||
.list()
|
||||
: issueTicketProcessService.lambdaQuery()
|
||||
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
|
||||
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
|
||||
.one();
|
||||
.list();
|
||||
|
||||
// 查询当前登录人的处理记录
|
||||
QmsIssueTicketProcess process = CollectionUtil.isEmpty(processes) ? null : processes.get(0);
|
||||
|
||||
if (process != null && StrUtil.isNotBlank(process.getTaskResultIds())) {
|
||||
// 解析不合格项ID
|
||||
|
|
@ -2460,7 +2490,31 @@ public class QmsIssueTicketControllerService {
|
|||
}
|
||||
}
|
||||
}
|
||||
vo.setIssueDetails(issueDetails);
|
||||
vo.setIssueDetails(buildPqcIssueDetails(processes));
|
||||
if (CollectionUtil.isNotEmpty(processes)) {
|
||||
Long temporaryTypeIdAll = dictionaryItemService.getId("工单解决措施", "临时纠正措施");
|
||||
Long permanentTypeIdAll = dictionaryItemService.getId("工单解决措施", "永久纠正措施");
|
||||
List<Long> processIdsAll = processes.stream()
|
||||
.map(QmsIssueTicketProcess::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (temporaryTypeIdAll != null && CollectionUtil.isNotEmpty(processIdsAll)) {
|
||||
List<QmsIssueTicketProcessMeasure> temporaryMeasuresAll = issueTicketProcessMeasureService.lambdaQuery()
|
||||
.in(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, processIdsAll)
|
||||
.eq(QmsIssueTicketProcessMeasure::getMeasureTypeId, temporaryTypeIdAll)
|
||||
.list();
|
||||
vo.setTemporaryMeasures(convertToMeasureVO(temporaryMeasuresAll));
|
||||
}
|
||||
|
||||
if (permanentTypeIdAll != null && CollectionUtil.isNotEmpty(processIdsAll)) {
|
||||
List<QmsIssueTicketProcessMeasure> permanentMeasuresAll = issueTicketProcessMeasureService.lambdaQuery()
|
||||
.in(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, processIdsAll)
|
||||
.eq(QmsIssueTicketProcessMeasure::getMeasureTypeId, permanentTypeIdAll)
|
||||
.list();
|
||||
vo.setPermanentMeasures(convertToMeasureVO(permanentMeasuresAll));
|
||||
}
|
||||
}
|
||||
|
||||
// 7. 查询措施列表
|
||||
if (process != null) {
|
||||
|
|
@ -2514,6 +2568,137 @@ public class QmsIssueTicketControllerService {
|
|||
/**
|
||||
* 解析文件列表
|
||||
*/
|
||||
private List<QmsPqcTicketMyDetailVO.PqcIssueDetailVO> buildPqcIssueDetails(List<QmsIssueTicketProcess> processes) {
|
||||
if (CollectionUtil.isEmpty(processes)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
List<Long> orderedTaskResultIds = new ArrayList<>();
|
||||
Map<Long, QmsIssueTicketProcess> taskResultProcessMap = new LinkedHashMap<>();
|
||||
for (QmsIssueTicketProcess process : processes) {
|
||||
for (Long taskResultId : parseTaskResultIds(process.getTaskResultIds())) {
|
||||
orderedTaskResultIds.add(taskResultId);
|
||||
taskResultProcessMap.putIfAbsent(taskResultId, process);
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isEmpty(orderedTaskResultIds)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
List<QmsPqcTaskRecordDetails> details = pqcTaskRecordDetailsService.lambdaQuery()
|
||||
.in(QmsPqcTaskRecordDetails::getId, orderedTaskResultIds)
|
||||
.list();
|
||||
if (CollectionUtil.isEmpty(details)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
Map<Long, Integer> sortIndexMap = new HashMap<>();
|
||||
for (int i = 0; i < orderedTaskResultIds.size(); i++) {
|
||||
sortIndexMap.putIfAbsent(orderedTaskResultIds.get(i), i);
|
||||
}
|
||||
details.sort(Comparator.comparingInt(detail -> sortIndexMap.getOrDefault(detail.getId(), Integer.MAX_VALUE)));
|
||||
|
||||
Set<Long> itemIds = details.stream()
|
||||
.map(QmsPqcTaskRecordDetails::getInspectionPointItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, QmsPqcInspectionPointItems> itemMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(itemIds)) {
|
||||
itemMap = pqcInspectionPointItemsService.listByIds(itemIds).stream()
|
||||
.collect(Collectors.toMap(QmsPqcInspectionPointItems::getId, item -> item, (a, b) -> a));
|
||||
}
|
||||
|
||||
Set<Long> taskIds = details.stream()
|
||||
.map(QmsPqcTaskRecordDetails::getTaskId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, QmsPqcTaskRecord> taskMap = new HashMap<>();
|
||||
Map<Long, QmsPqcInspectionPoint> pointMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(taskIds)) {
|
||||
List<QmsPqcTaskRecord> tasks = pqcTaskRecordService.listByIds(taskIds);
|
||||
taskMap = tasks.stream()
|
||||
.collect(Collectors.toMap(QmsPqcTaskRecord::getId, task -> task, (a, b) -> a));
|
||||
|
||||
Set<Long> inspectionPointIds = tasks.stream()
|
||||
.map(QmsPqcTaskRecord::getInspectionPointId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
if (CollectionUtil.isNotEmpty(inspectionPointIds)) {
|
||||
pointMap = pqcInspectionPointService.listByIds(inspectionPointIds).stream()
|
||||
.collect(Collectors.toMap(QmsPqcInspectionPoint::getId, point -> point, (a, b) -> a));
|
||||
}
|
||||
}
|
||||
|
||||
Set<Long> allFileIds = new HashSet<>();
|
||||
details.forEach(detail -> {
|
||||
collectFileIds(detail.getSelfTestAttachments(), allFileIds);
|
||||
collectFileIds(detail.getQcTestAttachments(), allFileIds);
|
||||
});
|
||||
Map<Long, FileUploadRecord> fileMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(allFileIds)) {
|
||||
fileMap = fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, allFileIds)
|
||||
.list()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(FileUploadRecord::getId, file -> file, (a, b) -> a));
|
||||
}
|
||||
|
||||
List<QmsPqcTicketMyDetailVO.PqcIssueDetailVO> issueDetails = new ArrayList<>();
|
||||
for (QmsPqcTaskRecordDetails detail : details) {
|
||||
QmsPqcTicketMyDetailVO.PqcIssueDetailVO issueVO = new QmsPqcTicketMyDetailVO.PqcIssueDetailVO();
|
||||
issueVO.setTaskResultId(detail.getId());
|
||||
|
||||
QmsPqcInspectionPointItems item = itemMap.get(detail.getInspectionPointItemId());
|
||||
if (item != null) {
|
||||
issueVO.setInspectionContent(item.getInspectionContent());
|
||||
issueVO.setInspectionLevel(item.getInspectionLevel() != null ? item.getInspectionLevel().shortValue() : null);
|
||||
issueVO.setInspectionExampleImage(item.getInspectionImgUrl());
|
||||
}
|
||||
|
||||
QmsPqcTaskRecord task = taskMap.get(detail.getTaskId());
|
||||
if (task != null) {
|
||||
QmsPqcInspectionPoint point = pointMap.get(task.getInspectionPointId());
|
||||
if (point != null) {
|
||||
issueVO.setInspectionPointName(point.getInspectionPointName());
|
||||
}
|
||||
issueVO.setInspectorId(task.getSelfTesterId());
|
||||
issueVO.setInspectorName(task.getSelfTesterName());
|
||||
issueVO.setInspectionTime(task.getCompleteTime());
|
||||
issueVO.setInspectionResult(task.getEnable());
|
||||
}
|
||||
|
||||
issueVO.setSelfTestData(detail.getSelfTestData());
|
||||
issueVO.setQcTestData(detail.getQcTestData());
|
||||
issueVO.setReviewOpinion(detail.getReviewOpinion());
|
||||
issueVO.setSelfTestFiles(parseFileList(detail.getSelfTestAttachments(), fileMap));
|
||||
issueVO.setQcTestFiles(parseFileList(detail.getQcTestAttachments(), fileMap));
|
||||
|
||||
QmsIssueTicketProcess process = taskResultProcessMap.get(detail.getId());
|
||||
if (process != null) {
|
||||
issueVO.setHandlerUserId(process.getHandlerUserId());
|
||||
issueVO.setHandlerUserName(process.getHandlerUserName());
|
||||
issueVO.setProcessTime(process.getApprovalTime());
|
||||
issueVO.setProcessStatus(process.getApprovalStatus());
|
||||
issueVO.setProcessRemark(process.getApprovalOpinion());
|
||||
}
|
||||
|
||||
issueDetails.add(issueVO);
|
||||
}
|
||||
return issueDetails;
|
||||
}
|
||||
|
||||
private List<Long> parseTaskResultIds(String taskResultIds) {
|
||||
if (StrUtil.isBlank(taskResultIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return Arrays.stream(taskResultIds.split(","))
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(String::trim)
|
||||
.map(Long::valueOf)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<QmsPqcTicketMyDetailVO.FileDetailVO> parseFileList(String fileIdsStr, Map<Long, FileUploadRecord> fileMap) {
|
||||
if (StrUtil.isBlank(fileIdsStr)) {
|
||||
return new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ public class QmsIssueTicketProcessControllerService {
|
|||
*/
|
||||
public void add(QmsIssueTicketProcessAddQO request) {
|
||||
Long currentUserId = UserUtil.getUserId();
|
||||
String currentUserName = UserUtil.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 校验不能分配给自己
|
||||
boolean containsSelf = request.getHandlers().stream()
|
||||
|
|
@ -88,6 +90,16 @@ public class QmsIssueTicketProcessControllerService {
|
|||
for (Map.Entry<Long, List<Long>> entry : handlerToResultsMap.entrySet()) {
|
||||
doAdd(request.getIssueTicketId(), entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
if (Objects.equals(ticket.getSourceType(), (short) 3) && !Objects.equals(ticket.getStatus(), (short) 1)) {
|
||||
issueTicketService.lambdaUpdate()
|
||||
.eq(QmsIssueTicket::getId, ticket.getId())
|
||||
.set(QmsIssueTicket::getStatus, (short) 1)
|
||||
.set(QmsIssueTicket::getUpdateUserId, currentUserId)
|
||||
.set(QmsIssueTicket::getUpdateUserName, currentUserName)
|
||||
.set(QmsIssueTicket::getUpdateTime, now)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue