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