From ce7b99081310df4dcf9ff0d5edd5d721793eb1a5 Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Fri, 8 May 2026 09:27:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E6=97=A0=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E5=BE=85=E6=B5=81=E8=BD=AC=E7=8A=B6?= =?UTF-8?q?=E6=80=81=20-=20=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=BE=85=E6=B5=81=E8=BD=AC=E6=95=B0=E9=87=8F=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=92=8C=E8=BF=94=E5=9B=9E=E5=80=BC=E6=94=AF=E6=8C=81?= =?UTF-8?q?feat(inspection):=20=E6=B7=BB=E5=8A=A0=E8=B4=A8=E6=A3=80?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E2=80=9C=E5=BE=85=E6=B5=81=E8=BD=AC=E2=80=9D?= =?UTF-8?q?=E5=8F=8A=E5=9F=BA=E4=BA=8E=E7=8A=B6=E6=80=81=E7=9A=84=E4=B8=8D?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在质检结果提交接口中根据整体判定和检测项结果新增质检状态3“待流转” - 工单创建者查询PDI工单详情时返回全部处理记录,非创建者仅返回相关处理记录和措施 - 新增不合格项返回逻辑,确保不合格项列表正确反馈 - 扩展数据库映射、VO和查询条件,支持质检状态3“待流转” - 调整SQL查询和状态判断逻辑,兼容“待流转”状态的工单流程处理 - 细化工单流程状态和质检状态对应关系,提升系统状态表达准确性 --- .../QmsIssueTicketControllerService.java | 33 ++++++++++++------- ...PdiInspectionResultsControllerService.java | 27 ++++++++------- .../pojo/qo/QmsPdiTaskRecordSearchQO.java | 2 +- .../vo/QmsPdiInspectionResultsPageVO.java | 2 +- .../wms/common/pojo/vo/QmsPdiTaskListVO.java | 5 +++ .../pojo/vo/QmsPdiTaskRecordDefectPageVO.java | 2 +- .../pojo/vo/QmsPdiTaskRecordSummaryVO.java | 2 +- .../repository/entity/QmsPdiTaskRecord.java | 2 +- .../mapper/QmsPdiInspectionResultsMapper.xml | 3 +- .../mapper/QmsPdiTaskRecordMapper.xml | 12 +++---- 10 files changed, 56 insertions(+), 34 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 74ffb267..817fbfd5 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -508,8 +508,8 @@ public class QmsIssueTicketControllerService { /** * 查询本人的PDI工单详情 - * 校验当前登录人在 qms_issue_ticket_process 中为处理人/审批人/上级领导 - * 仅返回当前登录人相关的处理记录及其措施 + * 校验当前登录人为工单创建者,或在处理记录中为处理人/审批人/上级领导 + * 工单创建者返回全部处理记录,其他人仅返回自己相关的处理记录及措施 */ public QmsPdiTicketMyDetailVO getMyPdiTicketDetail(Long id) { Long currentUserId = UserUtil.getUserId(); @@ -517,15 +517,26 @@ public class QmsIssueTicketControllerService { // 查询工单基本信息 QmsIssueTicket ticket = issueTicketService.getById(id); - // 查询当前登录人相关的处理记录(处理人ID/审批人ID/上级领导ID = 当前用户) - List processes = issueTicketProcessService.lambdaQuery() - .eq(QmsIssueTicketProcess::getIssueTicketId, id) - .and(w -> w - .eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId) - .or().eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId) - .or().eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId) - ) - .list(); + // 判断是否为工单创建者 + boolean isCreator = ticket.getCreateUserId() != null && ticket.getCreateUserId().equals(currentUserId); + + List processes; + if (isCreator) { + // 工单创建者:返回全部处理记录 + processes = issueTicketProcessService.lambdaQuery() + .eq(QmsIssueTicketProcess::getIssueTicketId, id) + .list(); + } else { + // 非创建者:仅返回自己相关的处理记录 + processes = issueTicketProcessService.lambdaQuery() + .eq(QmsIssueTicketProcess::getIssueTicketId, id) + .and(w -> w + .eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId) + .or().eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId) + .or().eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId) + ) + .list(); + } // 构建返回VO QmsPdiTicketMyDetailVO vo = new QmsPdiTicketMyDetailVO(); diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java index f6583045..7fbd6448 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java @@ -146,7 +146,8 @@ public class QmsPdiInspectionResultsControllerService { * 3. 检查 type=0/1/3 是否都有结果 * 4. 检查 type=2 是否都传了图片 * 5. 设置 detection_completion_time,将 overallResult 存入 task_record - * 6. 若有不合格项则以 list 返回(仅 type=0/1/3),无则返回 null + * 6. 根据整体判定+检测项结果设置状态:合格=2(已完成),不合格=3(待流转) + * 7. 若有不合格项则以 list 返回(仅 type=0/1/3),无则返回 null */ @Transactional public List submit(QmsPdiInspectionResultsSubmitQO request) { @@ -200,28 +201,31 @@ public class QmsPdiInspectionResultsControllerService { } // 4. 将整体判定结果存入 task_record + boolean overallResult = request.getOverallResult() != null && request.getOverallResult(); taskRecordService.lambdaUpdate() .eq(QmsPdiTaskRecord::getId, taskRecord.getId()) - .set(QmsPdiTaskRecord::getInspectionInspection, - request.getOverallResult() != null && request.getOverallResult()) + .set(QmsPdiTaskRecord::getInspectionInspection, overallResult) .update(); - // 5. 设置检测完成时间、是否延期、状态改为已完成 + // 5. 查询不合格检测项(type=0/1/3) + List failedItems = inspectionResultsService.lambdaQuery() + .eq(QmsPdiInspectionResults::getTaskId, request.getTaskId()) + .ne(QmsPdiInspectionResults::getInspectionItemType, 2) + .eq(QmsPdiInspectionResults::getInspectionItemResults, false) + .list(); + + // 6. 根据整体判定+检测项结果设置状态:有不合格则=3(待流转),全合格则=2(已完成) + boolean hasDefect = !overallResult || !failedItems.isEmpty(); boolean overdue = taskRecord.getRequiredCompletionTime() != null && now.isAfter(taskRecord.getRequiredCompletionTime()); taskRecordService.lambdaUpdate() .eq(QmsPdiTaskRecord::getId, taskRecord.getId()) .set(QmsPdiTaskRecord::getDetectionCompletionTime, now) .set(QmsPdiTaskRecord::getOverdue, overdue) - .set(QmsPdiTaskRecord::getInspectionEnable, 2) + .set(QmsPdiTaskRecord::getInspectionEnable, hasDefect ? 3 : 2) .update(); - // 6. 返回不合格项(只查 type=0/1/3) - List failedItems = inspectionResultsService.lambdaQuery() - .eq(QmsPdiInspectionResults::getTaskId, request.getTaskId()) - .ne(QmsPdiInspectionResults::getInspectionItemType, 2) - .eq(QmsPdiInspectionResults::getInspectionItemResults, false) - .list(); + // 7. 返回不合格项 return failedItems.isEmpty() ? null : failedItems; } @@ -248,6 +252,7 @@ public class QmsPdiInspectionResultsControllerService { vo.setInProgressCount(toInt(countMap.get("inProgressCount"))); vo.setOverdueCount(toInt(countMap.get("overdueCount"))); vo.setCompletedCount(toInt(countMap.get("completedCount"))); + vo.setPendingTransferCount(toInt(countMap.get("pendingTransferCount"))); return vo; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPdiTaskRecordSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPdiTaskRecordSearchQO.java index 3b0a6924..3effb725 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPdiTaskRecordSearchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPdiTaskRecordSearchQO.java @@ -30,7 +30,7 @@ public class QmsPdiTaskRecordSearchQO { private String inspectorName; /** - * 质检状态(可选):0待检查,1检验中,2已完成 + * 质检状态(可选):0待检查,1检验中,2已完成,3待流转 */ private Integer inspectionEnable; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java index 68604063..675895bc 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java @@ -51,7 +51,7 @@ public class QmsPdiInspectionResultsPageVO { private LocalDateTime requiredCompletionTime; /** - * 质检状态:0=待检查,1=检验中,2=已完成 + * 质检状态:0=待检查,1=检验中,2=已完成,3=待流转 */ private Integer inspectionEnable; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskListVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskListVO.java index c591761e..6522f12f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskListVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskListVO.java @@ -39,4 +39,9 @@ public class QmsPdiTaskListVO { * 已完成数量(inspection_enable=2) */ private int completedCount; + + /** + * 待流转数量(inspection_enable=3) + */ + private int pendingTransferCount; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java index d547a00f..940954be 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java @@ -111,7 +111,7 @@ public class QmsPdiTaskRecordDefectPageVO { private Boolean overdue; /** - * 工单流程状态(来自qms_issue_ticket.status):0=待流转,1=处理中,2=已完成;null=未创建工单 + * 流程状态:有工单时取工单状态(0=待流转,1=处理中,2=已完成),无工单时取任务状态(2=已完成,3=待流转) */ private Short status; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordSummaryVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordSummaryVO.java index 606e6077..394503e8 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordSummaryVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordSummaryVO.java @@ -56,7 +56,7 @@ public class QmsPdiTaskRecordSummaryVO { private Integer specialItemCount; /** - * 质检状态:0=待检查,1=检验中,2=已完成 + * 质检状态:0=待检查,1=检验中,2=已完成,3=待流转 */ private Integer inspectionEnable; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java index d63832b1..610c224d 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java @@ -38,7 +38,7 @@ public class QmsPdiTaskRecord implements Serializable { private Long detectionRulesId; /** - * 质检状态:0为待检查,1为检验中,2为已完成 + * 质检状态:0为待检查,1为检验中,2为已完成,3为待流转 */ private Integer inspectionEnable; diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml index caa01723..85046063 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml @@ -71,7 +71,8 @@ COUNT(CASE WHEN t.inspection_enable = 0 THEN 1 END) AS "pendingCount", COUNT(CASE WHEN t.inspection_enable = 1 THEN 1 END) AS "inProgressCount", COUNT(CASE WHEN t.overdue = true THEN 1 END) AS "overdueCount", - COUNT(CASE WHEN t.inspection_enable = 2 THEN 1 END) AS "completedCount" + COUNT(CASE WHEN t.inspection_enable = 2 THEN 1 END) AS "completedCount", + COUNT(CASE WHEN t.inspection_enable = 3 THEN 1 END) AS "pendingTransferCount" FROM qms_pdi_task_record t LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsPdiTaskRecordMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsPdiTaskRecordMapper.xml index b4a048e6..9a5e1b4c 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsPdiTaskRecordMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsPdiTaskRecordMapper.xml @@ -51,9 +51,9 @@ AND t.warehouse_no = #{request.warehouseNo} - + AND ( - t.inspection_enable IN (0, 1) + t.inspection_enable IN (0, 1, 3) OR ( t.inspection_enable = 2 AND t.inspection_inspection = true @@ -92,7 +92,7 @@ t.required_completion_time AS requiredCompletionTime, t.detection_completion_time AS detectionCompletionTime, t.overdue, - it.status AS status, + COALESCE(it.status, t.inspection_enable) AS status, it.ticket_no AS ticketNo, it.ticket_title AS ticketTitle FROM qms_pdi_task_record t @@ -101,8 +101,8 @@ LEFT JOIN "user" ua ON ua.id = t.assistant_id LEFT JOIN qms_issue_ticket it ON it.source_type = 1 AND it.source_id = t.id - - AND t.inspection_enable = 2 + + AND t.inspection_enable IN (2, 3) AND t.inspection_inspection = false AND EXISTS ( SELECT 1 @@ -132,7 +132,7 @@ AND t.warehouse_no = #{request.warehouseNo} - AND it.status = #{request.status} + AND COALESCE(it.status, t.inspection_enable) = #{request.status} ORDER BY t.id DESC