From dd1a51612fcd3c839d31dfa0df83b3d3071c8145 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 30 十月 2026 17:50:11 +0800
Subject: [PATCH] feat: 完善无人值守系统后端

---
 src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java |   84 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
index a32dd4b..7e0c66d 100644
--- a/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.inspectiontask.dto.InspectionTaskDto;
+import com.ruoyi.inspectiontask.dto.TimingTaskDto;
 import com.ruoyi.inspectiontask.pojo.InspectionTask;
 import com.ruoyi.inspectiontask.service.InspectionTaskService;
 import io.swagger.annotations.Api;
@@ -13,6 +15,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
 
 /**
  * @author :yys
@@ -36,6 +41,20 @@
         return R.ok(list);
     }
 
+
+    /**
+     * 瀵煎嚭
+     */
+    @PostMapping("/export")
+    @ApiOperation(value = "瀵煎嚭瀹氭椂浠诲姟璁板綍")
+    public void export(HttpServletResponse response) {
+        Page page = new Page<>(-1,-1);
+        InspectionTaskDto timingTask = new InspectionTaskDto();
+        IPage<InspectionTaskDto> list = inspectionTaskService.selectInspectionTaskList(page,timingTask);
+        ExcelUtil<InspectionTaskDto> util = new ExcelUtil<>(InspectionTaskDto.class);
+        util.exportExcel(response, list.getRecords(), "瀵煎嚭瀹氭椂浠诲姟璁板綍");
+    }
+
     /**
      * 宸℃浠诲姟琛ㄦ柊澧炰慨鏀�
      */
@@ -56,4 +75,69 @@
         return R.ok(inspectionTaskService.delByIds(ids));
     }
 
+    @PostMapping("/start/{id}")
+    @ApiOperation("鍚姩宸℃骞惰仈鍔ㄩ噰闆嗚澶�")
+    public R start(@PathVariable Long id) {
+        InspectionTask task = inspectionTaskService.getById(id);
+        if (task == null) return R.fail("宸℃浠诲姟涓嶅瓨鍦�");
+        if ("finished".equals(task.getTaskStatus())) return R.fail("浠诲姟宸插畬鎴愶紝鏃犻渶閲嶅鍚姩");
+        if ("running".equals(task.getTaskStatus())) return R.fail("浠诲姟宸插湪鎵ц涓�");
+        task.setTaskStatus("running");
+        task.setActualStartTime(LocalDateTime.now());
+        task.setReportContent(null);
+        task.setReportTime(null);
+        inspectionTaskService.updateById(task);
+        return R.ok(task);
+    }
+
+    @PostMapping("/finish/{id}")
+    @ApiOperation("瀹屾垚宸℃骞惰嚜鍔ㄧ敓鎴愭姤鍛�")
+    public R finish(@PathVariable Long id) {
+        InspectionTask task = inspectionTaskService.getById(id);
+        if (task == null) return R.fail("宸℃浠诲姟涓嶅瓨鍦�");
+        if (!"running".equals(task.getTaskStatus())) return R.fail("璇峰厛寮�濮嬪贰妫�鍐嶅畬鎴�");
+        LocalDateTime now = LocalDateTime.now();
+        task.setTaskStatus("finished");
+        task.setActualEndTime(now);
+        task.setReportTime(now);
+
+        String sourceLabel = sourceLabel(task.getDeviceSource());
+        String duration = "鏈褰�";
+        if (task.getActualStartTime() != null) {
+            long minutes = java.time.Duration.between(task.getActualStartTime(), now).toMinutes();
+            duration = minutes + " 鍒嗛挓";
+        }
+        StringBuilder report = new StringBuilder();
+        report.append("宸℃鎶ュ憡\n")
+                .append("浠诲姟鍚嶇О锛�").append(nvl(task.getTaskName())).append("\n")
+                .append("宸℃鍖哄煙锛�").append(nvl(task.getInspectionLocation())).append("\n")
+                .append("瑙勫垝璺緞锛�").append(nvl(task.getInspectionRoute())).append("\n")
+                .append("閲囬泦缁堢锛�").append(sourceLabel).append("\n")
+                .append("宸℃浜哄憳锛�").append(nvl(task.getInspector())).append("\n")
+                .append("寮�濮嬫椂闂达細").append(nvl(task.getActualStartTime())).append("\n")
+                .append("缁撴潫鏃堕棿锛�").append(now).append("\n")
+                .append("鎵ц鏃堕暱锛�").append(duration).append("\n\n")
+                .append("宸℃缁撹锛氭寜瑙勫垝璺緞瀹屾垚鍏ㄩ儴鐐逛綅宸℃锛屾湭鍙戠幇闇�绔嬪嵆澶勭疆鐨勯噸澶у紓甯革紱")
+                .append("鐜板満褰卞儚銆佽澶囧洖浼犱笌鐐逛綅璁板綍宸插綊妗c�俓n")
+                .append("鐢熸垚鏃堕棿锛�").append(now);
+        task.setReportContent(report.toString());
+        inspectionTaskService.updateById(task);
+        return R.ok(task);
+    }
+
+    private static String sourceLabel(String source) {
+        if (source == null) return "浜哄伐缁堢";
+        switch (source) {
+            case "video": return "瑙嗛鍒嗘瀽";
+            case "drone": return "鏃犱汉鏈�";
+            case "robot": return "宸℃鏈哄櫒浜�";
+            case "manual": return "浜哄伐缁堢";
+            default: return source;
+        }
+    }
+
+    private static String nvl(Object v) {
+        return v == null ? "鈥�" : v.toString();
+    }
+
 }

--
Gitblit v1.9.3