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