From 571661af0ff0b14c7b8915adb3859013b2dd7058 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 06 May 2024 15:23:16 +0800
Subject: [PATCH] 定时任务

---
 src/main/java/com/dji/sample/patches/utils/TimerUtil.java |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
new file mode 100644
index 0000000..582cb18
--- /dev/null
+++ b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
@@ -0,0 +1,131 @@
+package com.dji.sample.patches.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.dji.sample.common.model.CustomClaim;
+import com.dji.sample.patches.config.pojo.PatchesConfigPojo;
+import com.dji.sample.patches.dao.ShpToDataSourceMapper;
+import com.dji.sample.patches.model.entity.LotInfo;
+import com.dji.sample.patches.xml.mode.XMLTemplateModel;
+import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils;
+import com.dji.sample.wayline.model.dto.WaylineFileDTO;
+import com.dji.sample.wayline.model.entity.WaylineFileEntity;
+import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum;
+import com.dji.sample.wayline.model.param.CreateJobParam;
+import com.dji.sample.wayline.service.IWayLineTaskService;
+import com.dji.sample.wayline.service.IWaylineFileService;
+import com.dji.sample.wayline.service.IWaylineJobService;
+import org.locationtech.jts.geom.Coordinate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import static com.dji.sample.patches.utils.MultipartFileTOFileUtil.convert;
+import static com.dji.sample.patches.utils.ZipUtil.zipFolder;
+import static com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum.TIMED;
+import static com.dji.sample.wayline.model.enums.WaylineTemplateTypeEnum.WAYPOINT;
+
+@Component
+public class TimerUtil {
+    @Autowired
+    private ShpToDataSourceMapper shpToDataSourceMapper;
+    @Autowired
+    private PatchesConfigPojo patchesConfigPojo;
+    @Autowired
+    public IWaylineFileService waylineFileService;
+    @Autowired
+    private IWaylineJobService waylineJobService;
+    @Autowired
+    private IWayLineTaskService wayLineTaskService;
+
+    /**
+     * 定时
+     * @throws IOException
+     * @throws SQLException
+     */
+    @Scheduled(cron = "0 25 14 * * ?")
+    public void myTask() throws IOException, SQLException {
+        //获取未规划的图斑集合
+        List<LotInfo> list = getNoPlan();
+        long timestamp = System.currentTimeMillis();
+        String waylineName = "云飞行调查" + timestamp;
+        String workspaceId ="4a574db8-4ad3-48f7-9f16-3edbcd8056e1";
+        //根据获取的图斑集合获得kmz航线文件
+        MultipartFile multipartFile = getFile(waylineName, list);
+        //上传航线文件
+        String waylineId=backWayline(multipartFile, waylineName, workspaceId, backclaim().getUsername());
+        //将为规划的图斑状态更新为已规划
+        updateStatu(list);
+        //调用publshFlightTask方法创建定时任务
+        waylineJobService.publishFlightTask(JobParam(waylineId), backclaim());
+    }
+
+    public MultipartFile getFile(String waylineName, List<LotInfo> list) throws IOException {
+        List<PointPO> coordinates = GeoToolsUtil.getRoutePointOrder(list, 28.218512, 115.856725497);
+        XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list);
+        CreateWaylineFileUtils.createWaylineFile(xmlModel, patchesConfigPojo.getTemplate(), patchesConfigPojo.getTargetTemplate(), patchesConfigPojo.getWaylines(), patchesConfigPojo.getTargetWaylines());
+        String destKMZFile = patchesConfigPojo.getDestKMZFile() + waylineName + ".kmz";
+        zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
+        MultipartFile multipartFile = convert(new File(destKMZFile));
+        return multipartFile;
+    }
+
+    public String backWayline(MultipartFile multipartFile, String waylineName, String workspaceId,String username) {
+        waylineFileService.importKmzFileBack(multipartFile, workspaceId,username);
+        WaylineFileEntity entity = waylineFileService.selectByName(waylineName);
+        try {
+            waylineFileService.getObjectUrl(workspaceId, entity.getWaylineId());
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
+        return entity.getWaylineId();
+    }
+
+    public List<LotInfo> getNoPlan() {
+        return shpToDataSourceMapper.selectList(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getIsplan, 0));
+    }
+
+    public void updateStatu(List<LotInfo> list) {
+        for (LotInfo lotInfo : list) {
+            lotInfo.setIsplan(1);
+            shpToDataSourceMapper.updateById(lotInfo);
+        }
+    }
+    public CreateJobParam JobParam(String waylineId) {
+        List<List<Long>> listOfLists = new ArrayList<>();
+        List<Long> sublist = new ArrayList<>();
+        sublist.add(1714944600L); // 添加整数值
+        listOfLists.add(sublist);
+        List<Long> list = new ArrayList<>();
+        list.add(1714944600L);
+        CreateJobParam param = new CreateJobParam();
+        param.setName("云飞行调查");
+        param.setTaskType(TIMED);
+        param.setOutOfControlAction(0);
+        param.setRepFreType(3);
+        param.setRepFreVal(1);
+        param.setRepRuleType(1);
+        param.setExecuteStartTimeArr(listOfLists);
+        param.setRthAltitude(80);
+        param.setWaylineType(WAYPOINT);
+        param.setTaskPeriods(listOfLists);
+        param.setTaskDays(list);
+        param.setFileId(waylineId);
+        param.setDockSn("4TADKCMB010016");
+        return param;
+    }
+    public CustomClaim backclaim() {
+        CustomClaim claim=new CustomClaim();
+        claim.setId("1");
+        claim.setUsername("adminPC");
+        claim.setWorkspaceId("4a574db8-4ad3-48f7-9f16-3edbcd8056e1");
+        claim.setUserType(1);
+        return claim;
+    }
+}

--
Gitblit v1.9.3