From 350c6c907be54665cef1e5ff006581ff2773a04e Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 21 Jan 2026 12:42:16 +0800
Subject: [PATCH] 工单管理调整

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
index deb7e49..53bcaf8 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -232,6 +232,36 @@
                 return gdWorkOrderFlowService.save(flowEntity);
             }
         }
+        // 7. 验收通过
+        if (auditStatus == 7) {
+            // 查询同一个工单下的所有子任务
+            List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery()
+                    .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId()));
+
+            // 检查是否所有子任务都审核成功(除了被撤回和验收拒绝的)
+            boolean allSubTasksAudited = checkAllSubTasksAcceptancePassed(subTasks);
+            // 这里可以根据allSubTasksAudited的结果执行后续逻辑,比如更新工单状态等
+            if (allSubTasksAudited) {
+                // 执行工单状态更新逻辑
+                // 注意:需要注入工单相关的Service才能执行更新
+                GdWorkOrderEntity gdWorkOrderEntity = new GdWorkOrderEntity();
+                gdWorkOrderEntity.setId(task.getWorkOrderId());
+                gdWorkOrderEntity.setWorkOrderStatus(WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getCode());
+                Integer b1 = baseMapper.updateWorkOrderById(gdWorkOrderEntity);
+                if (b1 > 0) {
+                    // 6. 保存流转记录:使用枚举设置flowName
+                    GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity();
+                    flowEntity.setCreateUser(AuthUtil.getUserId());
+                    flowEntity.setWorkOrderId(task.getWorkOrderId());
+                    flowEntity.setFlowName(WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getDesc());
+                    flowEntity.setFlowDesc(AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") + " 更新了任务信息,状态转换为:" + WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getDesc());
+                    flowEntity.setOperator(AuthUtil.getUserName());
+                    flowEntity.setType(WorkOrderTypeEnum.PATROL_TASK.getValue());
+                    flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+                    return gdWorkOrderFlowService.save(flowEntity);
+                }
+            }
+        }
         return b;
     }
 
@@ -268,6 +298,38 @@
         return statusEnum == PatrolTaskStatusEnum.AUDIT_PASSED;
     }
 
+    /**
+     * 判断单个任务是否验收通过
+     *
+     * @param statusEnum 任务状态枚举
+     * @return 是否验收通过
+     */
+    private boolean isTaskAcceptancePassed(PatrolTaskStatusEnum statusEnum) {
+        // 验收通过的任务状态包括:验收通过
+        return statusEnum == PatrolTaskStatusEnum.ACCEPTANCE_PASSED;
+    }
+
+    /**
+     * 检查是否所有子任务都验收通过(除了被撤回和验收拒绝的)
+     *
+     * @param subTasks 子任务列表
+     * @return 是否所有子任务都验收通过
+     */
+    private boolean checkAllSubTasksAcceptancePassed(List<GdPatrolTaskEntity> subTasks) {
+        for (GdPatrolTaskEntity subTask : subTasks) {
+            String taskStatus = subTask.getTaskStatus();
+            PatrolTaskStatusEnum statusEnum = PatrolTaskStatusEnum.getByValue(taskStatus);
+
+            // 如果任务状态不是验收通过状态,且不是被撤回和验收拒绝的,则返回false
+            if (!isTaskAcceptancePassed(statusEnum) &&
+                    statusEnum != PatrolTaskStatusEnum.WITHDRAWN &&
+                    statusEnum != PatrolTaskStatusEnum.REJECTED_ACCEPTANCE) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean republishPatrolTask(GdPatrolTaskEntity taskEntity) {

--
Gitblit v1.9.3