From 1ad4e77cc910abdb7e95ebea160473526c8ac9ce Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sun, 08 Oct 2023 17:32:13 +0800
Subject: [PATCH] 添加重复定时和连续执行
---
src/main/java/com/dji/sample/wayline/model/enums/WaylineRepFreTypeEnum.java | 19 ++++++
src/main/java/com/dji/sample/wayline/model/param/CreateJobParam.java | 8 ++
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml | 1
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java | 39 +++++++++++++
src/main/java/com/dji/sample/wayline/utils/JobTimeUtils.java | 74 ++++++++++++++++++++++++
pom.xml | 5 +
src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java | 32 ++++++++++
7 files changed, 177 insertions(+), 1 deletions(-)
diff --git a/pom.xml b/pom.xml
index 68b3737..070d3ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -179,6 +179,11 @@
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>1.2.33</version>
+ </dependency>
</dependencies>
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
index 0fe4e2c..90b955e 100644
--- a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
+++ b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
@@ -37,6 +37,7 @@
#{item}
</foreach>
</if>
+ ORDER BY job.create_time DESC
</select>
</mapper>
diff --git a/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
index 68f29f7..a27129e 100644
--- a/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
+++ b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
@@ -1,12 +1,14 @@
package com.dji.sample.wayline.model.entity;
import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
+import java.util.List;
/**
* @author sean
@@ -17,7 +19,7 @@
@Builder
@NoArgsConstructor
@AllArgsConstructor
-@TableName("wayline_job")
+@TableName(value = "wayline_job",autoResultMap = true)
public class WaylineJobEntity implements Serializable {
@TableId(type = IdType.AUTO)
@@ -82,4 +84,32 @@
@TableField("parent_id")
private String parentId;
+
+ /**
+ * 电量
+ */
+ @TableField("battery_capacity")
+ private Integer batteryCapacity;
+
+ /**
+ * 执行时间数组
+ */
+ @TableField(value = "execute_time_arr",typeHandler = FastjsonTypeHandler.class)
+ private List<List<Long>> executeTimeArr;
+
+ /**
+ * 重复频率类型
+ */
+ @TableField("rep_fre_type")
+ private Integer repFreType;
+
+ @TableField("rep_fre_val")
+ private Integer repFreVal;
+
+ @TableField("rep_rule_type")
+ private Integer repRuleType;
+
+ @TableField(value = "rep_rule_val",typeHandler = FastjsonTypeHandler.class)
+ private List<Integer> repRuleVal;
+
}
diff --git a/src/main/java/com/dji/sample/wayline/model/enums/WaylineRepFreTypeEnum.java b/src/main/java/com/dji/sample/wayline/model/enums/WaylineRepFreTypeEnum.java
new file mode 100644
index 0000000..b2952f3
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/model/enums/WaylineRepFreTypeEnum.java
@@ -0,0 +1,19 @@
+package com.dji.sample.wayline.model.enums;
+
+import lombok.Getter;
+
+/**
+ * 任务重复频率类型
+ */
+@Getter
+public enum WaylineRepFreTypeEnum {
+ DAY(1),
+ WEEK(2),
+ MONTH(3);
+
+ private Integer val;
+
+ WaylineRepFreTypeEnum(Integer val) {
+ this.val = val;
+ }
+}
diff --git a/src/main/java/com/dji/sample/wayline/model/param/CreateJobParam.java b/src/main/java/com/dji/sample/wayline/model/param/CreateJobParam.java
index 558a9d2..0b53350 100644
--- a/src/main/java/com/dji/sample/wayline/model/param/CreateJobParam.java
+++ b/src/main/java/com/dji/sample/wayline/model/param/CreateJobParam.java
@@ -48,4 +48,12 @@
private List<Long> taskDays;
private List<List<Long>> taskPeriods;
+
+ private Integer repFreType;
+
+ private Integer repFreVal;
+
+ private Integer repRuleType;
+
+ private List<Integer> repRuleVal;
}
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 6270787..b95bf70 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -158,6 +158,45 @@
@Override
public ResponseResult publishFlightTask(CreateJobParam param, CustomClaim customClaim) throws SQLException {
+
+ //当重复定时和连续执行时走这个逻辑
+ if (param.getTaskType().getVal() == WaylineTaskTypeEnum.CONDITION.getVal()){
+
+
+
+
+
+ //保存数据
+ WaylineJobEntity waylineJobEntity = WaylineJobEntity.builder()
+ .jobId(UUID.randomUUID().toString())
+ .name(param.getName())
+ .dockSn(param.getDockSn())
+ .fileId(param.getFileId())
+ .username(customClaim.getUsername())
+ .workspaceId(customClaim.getWorkspaceId())
+
+
+ .beginTime(param.getTaskDays().get(0)*1000)
+ .endTime(param.getTaskDays().get(1)*1000)
+ .status(WaylineJobStatusEnum.PENDING.getVal())
+ .taskType(param.getTaskType().getVal())
+ .waylineType(param.getWaylineType().getVal())
+ .outOfControlAction(param.getOutOfControlAction())
+ .batteryCapacity(param.getMinBatteryCapacity())
+ .rthAltitude(param.getRthAltitude())
+ .mediaCount(0)
+ .repFreVal(param.getRepFreVal())
+ .repFreType(param.getRepFreType())
+ .repRuleType(param.getRepRuleType())
+ .repRuleVal(param.getRepRuleVal())
+ .executeTimeArr(param.getTaskPeriods())
+ .build();
+
+ Boolean insert = mapper.insert(waylineJobEntity)>0;
+
+ return ResponseResult.success(insert);
+ }
+
fillImmediateTime(param);
// param.getTaskDays().sort((a, b) -> (int) (a - b));
diff --git a/src/main/java/com/dji/sample/wayline/utils/JobTimeUtils.java b/src/main/java/com/dji/sample/wayline/utils/JobTimeUtils.java
new file mode 100644
index 0000000..88edbc0
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/utils/JobTimeUtils.java
@@ -0,0 +1,74 @@
+package com.dji.sample.wayline.utils;
+
+import com.dji.sample.wayline.model.entity.WaylineJobEntity;
+import com.dji.sample.wayline.model.enums.WaylineRepFreTypeEnum;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 处理任务时间
+ */
+public class JobTimeUtils {
+
+ public static void getJobTime(WaylineJobEntity waylineJobEntity) {
+ //获取开始时间
+
+ if (waylineJobEntity.getRepFreType() == WaylineRepFreTypeEnum.DAY.getVal()) {
+ //日
+
+
+ } else if (waylineJobEntity.getRepFreType() == WaylineRepFreTypeEnum.WEEK.getVal()) {
+ //周
+
+
+ } else if (waylineJobEntity.getRepFreType() == WaylineRepFreTypeEnum.MONTH.getVal()) {
+ //月
+
+
+ } else {
+
+ }
+
+
+ }
+
+
+ /**
+ * 根据开始时间和结束时间获取日期列表
+ * @param beginTime
+ * @param endTime
+ * @return
+ */
+ public static List<LocalDate> getDateBetweenTime(Long beginTime,Long endTime){
+ //开始日期
+ LocalDate beginDate = LocalDate.ofInstant(Instant.ofEpochMilli(beginTime), ZoneId.systemDefault());
+ //结束日期
+ LocalDate endDate =LocalDate.ofInstant(Instant.ofEpochMilli(endTime), ZoneId.systemDefault());
+
+ LocalDate date = beginDate;
+ List<LocalDate> dates = new ArrayList<>();
+ //遍历日期
+ while (!date.equals(endDate.plusDays(1))) {
+ dates.add(date);
+ date = date.plusDays(1);
+ }
+ return dates;
+ }
+
+
+ public static void main(String[] args) {
+ LocalTime localTime = LocalTime.ofInstant(Instant.ofEpochSecond(1696761468L), ZoneId.systemDefault());
+ DateFormat dateFormat = new SimpleDateFormat("HH:mm");
+ String format = localTime.format(DateTimeFormatter.ofPattern("HH:mm"));
+ System.out.println(format);
+ }
+}
--
Gitblit v1.9.3