From 3a456661ce922ce5f1549bc2df98c6d3c33a2289 Mon Sep 17 00:00:00 2001
From: xiebin <vip_xiaobin810@163.com>
Date: Wed, 21 Jan 2026 16:06:35 +0800
Subject: [PATCH] update-巡检任务新增执行完成-对外

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java |   64 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 1 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..b62b5f7 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
@@ -165,7 +165,7 @@
                 break;
             case 7: // 验收拒绝
                 newStatusEnum = PatrolTaskStatusEnum.REJECTED_ACCEPTANCE;
-                break;
+				break;
             default: // 无效操作类型
                 return false;
         }
@@ -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