吉安感知网项目-后端
linwei
2026-02-04 8a116ffbb7e4e6af1502a841b811b8108cdeb359
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java
@@ -21,6 +21,7 @@
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
@@ -35,13 +36,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.sxkj.gd.common.IdParam;
import org.sxkj.gd.workorder.entity.GdPatrolTaskEntity;
import org.sxkj.gd.workorder.entity.GdWorkOrderEntity;
import org.sxkj.gd.workorder.enums.PatrolTaskStatusEnum;
import org.sxkj.gd.workorder.param.GdPatrolTaskAddParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskUpdateParam;
import org.sxkj.gd.workorder.vo.GdClueEventVO;
import org.sxkj.gd.workorder.vo.GdPatrolTaskVO;
import org.sxkj.gd.workorder.excel.GdPatrolTaskExcel;
import org.sxkj.gd.workorder.wrapper.GdPatrolTaskWrapper;
@@ -50,15 +49,9 @@
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.StringUtil;
import org.sxkj.system.cache.SysCache;
import springfox.documentation.annotations.ApiIgnore;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
@@ -86,8 +79,8 @@
   @ApiOperationSupport(order = 1)
   @ApiOperation(value = "详情", notes = "传入gdPatrolTask")
   public R<GdPatrolTaskVO> detail(GdPatrolTaskEntity gdPatrolTask) {
      GdPatrolTaskEntity detail = gdPatrolTaskService.getOne(Condition.getQueryWrapper(gdPatrolTask));
      return R.data(GdPatrolTaskWrapper.build().entityVO(detail));
      GdPatrolTaskVO detail = gdPatrolTaskService.getPatrolTaskDetail(gdPatrolTask);
      return R.data(detail);
   }
   /**
@@ -97,11 +90,7 @@
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "分页", notes = "传入gdPatrolTask")
   public R<IPage<GdPatrolTaskVO>> page(GdPatrolTaskPageParam gdPatrolTask, Query query) {
      IPage<GdPatrolTaskVO> pages = gdPatrolTaskService.selectGdPatrolTaskPage(
         Condition.getPage(query),
         gdPatrolTask,
         SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()))
      );
      IPage<GdPatrolTaskVO> pages = gdPatrolTaskService.selectGdPatrolTaskPage(Condition.getPage(query), gdPatrolTask);
      return R.data(pages);
   }
@@ -119,7 +108,6 @@
      });
      return R.status(gdPatrolTaskService.savePatrolTask(taskEntityList));
   }
   /**
@@ -142,7 +130,7 @@
   @ApiIgnore
   public void exportGdPatrolTask(@ApiIgnore @RequestParam Map<String, Object> gdPatrolTask, BladeUser bladeUser, HttpServletResponse response) {
      QueryWrapper<GdPatrolTaskEntity> queryWrapper = Condition.getQueryWrapper(gdPatrolTask, GdPatrolTaskEntity.class);
      //if (!AuthUtil.isAdministrator()) {
      // if (!AuthUtil.isAdministrator()) {
      //   queryWrapper.lambda().eq(GdPatrolTask::getTenantId, bladeUser.getTenantId());
      //}
      queryWrapper.lambda().eq(GdPatrolTaskEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
@@ -174,7 +162,7 @@
      GdPatrolTaskEntity auditParam = new GdPatrolTaskEntity();
      auditParam.setId(param.getId());
      auditParam.setTaskStatus(PatrolTaskStatusEnum.PENDING_ACCEPTANCE.getValue());
      return R.status(gdPatrolTaskService.updateById(auditParam));
      return R.status(gdPatrolTaskService.updatePatrolTaskById(auditParam));
   }
   /**
@@ -184,7 +172,7 @@
   @ApiOperationSupport(order = 12)
   @ApiOperation(value = "更新单个巡查任务信息", notes = "传入巡查任务信息")
   public R republish(@Valid @RequestBody GdPatrolTaskUpdateParam gdPatrolTask) {
       GdPatrolTaskEntity gdPatrolTaskEntity = Objects.requireNonNull(BeanUtil.copy(gdPatrolTask, GdPatrolTaskEntity.class));
      GdPatrolTaskEntity gdPatrolTaskEntity = Objects.requireNonNull(BeanUtil.copy(gdPatrolTask, GdPatrolTaskEntity.class));
      boolean result = gdPatrolTaskService.republishPatrolTask(gdPatrolTaskEntity);
      return R.status(result);
   }
@@ -192,44 +180,21 @@
   @PostMapping("/export-report")
   @ApiOperationSupport(order = 13)
   @ApiOperation(value = "导出巡查报告", notes = "传入巡查任务id")
   public R<String> exportReport(@RequestParam Long id) {
   public R<Boolean> exportReport(@RequestParam Long id) {
      if (id == null) {
         return R.fail("巡查任务id不能为空");
      }
      File reportFile = gdPatrolTaskService.exportPatrolReport(id);
      File savedFile = saveReportToResources(reportFile, id);
      return R.data(savedFile.getAbsolutePath());
      boolean saved = gdPatrolTaskService.exportPatrolReport(id);
      return R.data(saved);
   }
   private File saveReportToResources(File reportFile, Long patrolTaskId) {
      if (reportFile == null || !reportFile.exists()) {
         throw new RuntimeException("生成的巡查报告文件不存在");
   @PostMapping("/push-xingtu")
   @ApiOperationSupport(order = 14)
   @ApiOperation(value = "推送星图任务", notes = "传入巡查任务id")
   public R pushXingtuTask(@RequestParam Long id) {
      if (id == null) {
         return R.fail("巡查任务id不能为空");
      }
      Path resourcesDir = resolveResourcesDir();
      String fileName = "gd_patrol_report_" + patrolTaskId + "_" + DateUtil.time() + ".docx";
      Path targetPath = resourcesDir.resolve(fileName);
      try {
         Files.createDirectories(resourcesDir);
         Files.copy(reportFile.toPath(), targetPath, StandardCopyOption.REPLACE_EXISTING);
         return targetPath.toFile();
      } catch (Exception e) {
         throw new RuntimeException("保存巡查报告失败", e);
      }
      return gdPatrolTaskService.pushXingtuFlyTask(id);
   }
   private Path resolveResourcesDir() {
      String userDir = System.getProperty("user.dir");
      if (StringUtil.isBlank(userDir)) {
         throw new RuntimeException("无法获取工作目录");
      }
      Path basePath = Paths.get(userDir);
      if (basePath.endsWith("drone-gd")) {
         return basePath.resolve("src").resolve("main").resolve("resources");
      }
      if (basePath.endsWith("drone-service")) {
         return basePath.resolve("drone-gd").resolve("src").resolve("main").resolve("resources");
      }
      return basePath.resolve("drone-service").resolve("drone-gd").resolve("src").resolve("main").resolve("resources");
   }
}