feat(qms): 优化工单重复校验及检测详情接口调整

- 在工单创建时增加同一taskRecordId只能创建一次工单的校验逻辑
- 已存在工单时仅新增处理记录,避免重复创建工单
- 删除QmsPdiInspectionResultsControllerService中检测详情接口的任务状态返回
- 调整检测详情接口返回类型为检测项列表,精简接口响应数据
- 在任务概要中新增inspectionEnable字段表示质检状态
- QmsPdiTaskRecordDefectPageVO新增质检人和帮办人ID字段
- 增加工单编号和标题字段,完善工单信息展示
- 调整MyBatis映射文件,增加对应字段的查询映射
- 删除QmsPdiTaskRecordDetailVO中冗余的DetailWithStatusVO类
This commit is contained in:
funny 2026-05-07 17:39:15 +08:00
parent 04f5ba7df8
commit f2901111b3
7 changed files with 52 additions and 32 deletions

View File

@ -81,7 +81,7 @@ public class QmsPdiInspectionResultsController extends BaseController {
* 根据任务ID + 检测项类型返回对应检测结果及图片URL
*/
@PostMapping("detail")
public ApiResult<QmsPdiTaskRecordDetailVO.DetailWithStatusVO> detail(
public ApiResult<List<QmsPdiTaskRecordDetailVO.StatusItemVO>> detail(
@Valid @RequestBody QmsPdiTaskRecordStatusItemDetailQO request) {
return ApiResult.success(inspectionResultsControllerService.detail(request));
}

View File

@ -173,6 +173,23 @@ public class QmsIssueTicketControllerService {
throw new NflgException(STATE.BusinessError, "PDI检测任务记录不存在");
}
// 校验是否已存在工单同一taskRecordId只能创建一次工单
QmsIssueTicket existingTicket = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 1)
.eq(QmsIssueTicket::getSourceId, request.getTaskRecordId())
.one();
if (existingTicket != null) {
// 工单已存在仅新增分配工单处理记录
issueTicketProcessControllerService.addAsync(
existingTicket.getId(),
request.getHandlerUserId(),
request.getInspectionResultIds(),
existingTicket.getTicketNo()
);
return;
}
// 查询检测规则
QmsPdiDetectionRules rules = pdiDetectionRulesService.getById(taskRecord.getDetectionRulesId());
if (Objects.isNull(rules)) {

View File

@ -276,20 +276,10 @@ public class QmsPdiInspectionResultsControllerService {
/**
* 查询检测项详情平板使用不分页
* 根据任务ID + 检测项类型返回对应结果及图片URL同时返回任务状态
* 根据任务ID + 检测项类型返回对应结果及图片URL
*/
public QmsPdiTaskRecordDetailVO.DetailWithStatusVO detail(QmsPdiTaskRecordStatusItemDetailQO request) {
QmsPdiTaskRecordDetailVO.DetailWithStatusVO result = new QmsPdiTaskRecordDetailVO.DetailWithStatusVO();
// 查询任务状态
QmsPdiTaskRecord taskRecord = taskRecordService.getById(request.getId());
if (taskRecord != null) {
result.setInspectionEnable(taskRecord.getInspectionEnable());
}
// 查询检测项列表
result.setItems(taskRecordControllerService.statusItemList(request.getId(), request.getInspectionItemType()));
return result;
public List<QmsPdiTaskRecordDetailVO.StatusItemVO> detail(QmsPdiTaskRecordStatusItemDetailQO request) {
return taskRecordControllerService.statusItemList(request.getId(), request.getInspectionItemType());
}
// ========================= 任务概要 =========================
@ -308,6 +298,7 @@ public class QmsPdiInspectionResultsControllerService {
vo.setDeviceNo(task.getDeviceNo());
vo.setOrderNo(task.getOrderNo());
vo.setRequiredCompletionTime(task.getRequiredCompletionTime());
vo.setInspectionEnable(task.getInspectionEnable());
// 查询检测规则获取机型编号和检测版本
if (task.getDetectionRulesId() != null) {

View File

@ -70,11 +70,21 @@ public class QmsPdiTaskRecordDefectPageVO {
*/
private String inspectorName;
/**
* 质检人ID
*/
private Long inspectorId;
/**
* 帮办人名字
*/
private String assistantName;
/**
* 帮办人ID
*/
private Long assistantId;
/**
* 质检时间开始检测时间
*/
@ -104,4 +114,14 @@ public class QmsPdiTaskRecordDefectPageVO {
* 工单流程状态来自qms_issue_ticket.status0=待流转1=处理中2=已完成null=未创建工单
*/
private Short status;
/**
* 工单编号
*/
private String ticketNo;
/**
* 工单标题
*/
private String ticketTitle;
}

View File

@ -132,21 +132,4 @@ public class QmsPdiTaskRecordDetailVO {
*/
private List<String> inspectionItemImage;
}
/**
* 检测项详情含任务状态
*/
@Data
public static class DetailWithStatusVO {
/**
* 质检状态0=待检查1=检验中2=已完成
*/
private Integer inspectionEnable;
/**
* 检测项列表
*/
private List<StatusItemVO> items;
}
}

View File

@ -54,4 +54,9 @@ public class QmsPdiTaskRecordSummaryVO {
* 特殊子项数量inspection_item_type=3
*/
private Integer specialItemCount;
/**
* 质检状态0=待检查1=检验中2=已完成
*/
private Integer inspectionEnable;
}

View File

@ -84,13 +84,17 @@
t.inspection_enable AS inspectionEnable,
t.inspection_inspection AS inspectionInspection,
ui.user_name AS inspectorName,
r.inspector_id AS inspectorId,
ua.user_name AS assistantName,
t.assistant_id AS assistantId,
t.start_detection_time AS startDetectionTime,
t.submission_time AS submissionTime,
t.required_completion_time AS requiredCompletionTime,
t.detection_completion_time AS detectionCompletionTime,
t.overdue,
it.status AS status
it.status AS status,
it.ticket_no AS ticketNo,
it.ticket_title AS ticketTitle
FROM qms_pdi_task_record t
LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id
LEFT JOIN "user" ui ON ui.id = r.inspector_id