refactor(qms): 优化车间质检结果处理逻辑

- 删除了工单异步处理及推送相关代码,简化工单保存流程
- 调整整体判定结果保存时机,确保先校验不合格检测项
- 新增校验逻辑,防止所有检测项合格但整体判定为不合格
- 修改不合格检测项查询条件,排除装车前检测项
- 优化任务状态设置顺序及注释说明
- 规范不合格项转换为VO并返回结果的代码位置
This commit is contained in:
funny 2026-05-09 11:50:48 +08:00
parent e639e633e0
commit 8701e0fb3d
2 changed files with 16 additions and 27 deletions

View File

@ -380,22 +380,6 @@ public class QmsIssueTicketControllerService {
.setUpdateTime(now); .setUpdateTime(now);
issueTicketService.save(entity); issueTicketService.save(entity);
// 按处理人分组异步新增工单处理记录并推送待办
Map<Long, List<Long>> handlerToResultsMap = request.getHandlers().stream()
.collect(Collectors.groupingBy(
QmsIssueTicketPdiAddQO.HandlerItem::getHandlerUserId,
Collectors.mapping(QmsIssueTicketPdiAddQO.HandlerItem::getTaskResultId, Collectors.toList())
));
for (Map.Entry<Long, List<Long>> entry : handlerToResultsMap.entrySet()) {
issueTicketProcessControllerService.addAsync(
entity.getId(),
entry.getKey(),
entry.getValue(),
ticketNo
);
}
} }
/** /**

View File

@ -214,22 +214,27 @@ public class QmsPdiInspectionResultsControllerService {
throw new NflgException(STATE.BusinessError, "还有" + unfilledImages + "项装车前检测未上传图片,无法提交"); throw new NflgException(STATE.BusinessError, "还有" + unfilledImages + "项装车前检测未上传图片,无法提交");
} }
// 4. 将整体判定结果存入 task_record // 4. 查询不合格检测项type=0/1/3装车前不计入
boolean overallResult = request.getOverallResult() != null && request.getOverallResult();
taskRecordService.lambdaUpdate()
.eq(QmsPdiTaskRecord::getId, taskRecord.getId())
.set(QmsPdiTaskRecord::getInspectionInspection, overallResult)
.update();
// 5. 查询不合格检测项type=0/1/3
List<QmsPdiInspectionResults> failedItems = inspectionResultsService.lambdaQuery() List<QmsPdiInspectionResults> failedItems = inspectionResultsService.lambdaQuery()
.eq(QmsPdiInspectionResults::getTaskId, request.getTaskId()) .eq(QmsPdiInspectionResults::getTaskId, request.getTaskId())
.ne(QmsPdiInspectionResults::getInspectionItemType, 2) .ne(QmsPdiInspectionResults::getInspectionItemType, 2)
.eq(QmsPdiInspectionResults::getInspectionItemResults, false) .eq(QmsPdiInspectionResults::getInspectionItemResults, false)
.list(); .list();
// 6. 根据整体判定+检测项结果设置状态有不合格则=3待流转全合格则=2已完成 // 5. 校验如果所有检测项都合格总体判定不能为不合格
boolean hasDefect = !overallResult || !failedItems.isEmpty(); boolean hasDefect = !failedItems.isEmpty();
if (!hasDefect && !request.getOverallResult()) {
throw new NflgException(STATE.BusinessError, "所有检测项均为合格,总体判定不能为不合格");
}
// 6. 将整体判定结果存入 task_record
boolean overallResult = request.getOverallResult() != null && request.getOverallResult();
taskRecordService.lambdaUpdate()
.eq(QmsPdiTaskRecord::getId, taskRecord.getId())
.set(QmsPdiTaskRecord::getInspectionInspection, overallResult)
.update();
// 7. 根据总体判定+检测项结果设置状态有不合格则=3待流转全合格则=2已完成
// 校验 overdue 字段无值时根据完成时间与要求完成时间比较设置有值则保持原值 // 校验 overdue 字段无值时根据完成时间与要求完成时间比较设置有值则保持原值
Boolean overdueValue = taskRecord.getOverdue(); Boolean overdueValue = taskRecord.getOverdue();
@ -245,7 +250,7 @@ public class QmsPdiInspectionResultsControllerService {
.set(QmsPdiTaskRecord::getInspectionEnable, hasDefect ? 3 : 2) .set(QmsPdiTaskRecord::getInspectionEnable, hasDefect ? 3 : 2)
.update(); .update();
// 7. 返回不合格项转换为VO图片改为List格式 // 8. 返回不合格项转换为VO图片改为List格式
return buildInspectionResultVOList(failedItems); return buildInspectionResultVOList(failedItems);
} }