无人机项目后端代码
guoshilong
2023-09-19 8e10cec76285192d30abecd7d09001a75f2755a3
计划查询
5 files modified
2 files added
468 ■■■■■ changed files
pom.xml 345 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml 42 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java 23 ●●●● patch | view | raw | blame | history
pom.xml
@@ -1,85 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dji</groupId>
    <artifactId>iot-drone-api</artifactId>
    <version>1.5.0</version>
    <name>iot-drone-api</name>
    <groupId>com.dji</groupId>
    <artifactId>iot-drone-api</artifactId>
    <version>1.5.0</version>
    <name>iot-drone-api</name>
    <properties>
        <java.version>11</java.version>
        <mybatis-plus.version>3.4.2</mybatis-plus.version>
        <druid.version>1.2.6</druid.version>
        <jwt.version>3.12.1</jwt.version>
        <mqtt.version>5.5.5</mqtt.version>
        <minio.version>8.3.7</minio.version>
        <okhttp3.version>4.9.1</okhttp3.version>
        <aliyun-sdk-sts.version>3.1.0</aliyun-sdk-sts.version>
        <aliyun-oss.version>3.12.0</aliyun-oss.version>
        <javax-activation.version>1.1.1</javax-activation.version>
        <glassfish-jaxb.version>2.3.3</glassfish-jaxb.version>
        <log4j2.version>2.15.0</log4j2.version>
        <javax-jaxb.version>2.3.0</javax-jaxb.version>
    </properties>
    <properties>
        <java.version>11</java.version>
        <mybatis-plus.version>3.4.2</mybatis-plus.version>
        <druid.version>1.2.6</druid.version>
        <jwt.version>3.12.1</jwt.version>
        <mqtt.version>5.5.5</mqtt.version>
        <minio.version>8.3.7</minio.version>
        <okhttp3.version>4.9.1</okhttp3.version>
        <aliyun-sdk-sts.version>3.1.0</aliyun-sdk-sts.version>
        <aliyun-oss.version>3.12.0</aliyun-oss.version>
        <javax-activation.version>1.1.1</javax-activation.version>
        <glassfish-jaxb.version>2.3.3</glassfish-jaxb.version>
        <log4j2.version>2.15.0</log4j2.version>
        <javax-jaxb.version>2.3.0</javax-jaxb.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
            <version>${mqtt.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
            <version>${mqtt.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains</groupId>
            <artifactId>annotations</artifactId>
@@ -87,115 +87,128 @@
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>${minio.version}</version>
        </dependency>
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>${minio.version}</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>${okhttp3.version}</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>${okhttp3.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-sts</artifactId>
            <version>${aliyun-sdk-sts.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-sts</artifactId>
            <version>${aliyun-sdk-sts.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>${aliyun-oss.version}</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>${aliyun-oss.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>${javax-activation.version}</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>${glassfish-jaxb.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>${javax-activation.version}</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>${glassfish-jaxb.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.12.261</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sts</artifactId>
            <version>1.12.261</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.12.261</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sts</artifactId>
            <version>1.12.261</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.69</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.69</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
    </dependencies>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        <!--配置后才可以扫描到xml文件-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -6,6 +6,7 @@
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -55,9 +56,9 @@
     */
    @GetMapping("/{workspace_id}/jobs")
    public ResponseResult<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
                     @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
                     @PathVariable(name = "workspace_id") String workspaceId) {
        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize);
                                                                 @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
                                                                 @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam){
        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,waylineJobQueryParam);
        return ResponseResult.success(data);
    }
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
@@ -1,7 +1,10 @@
package com.dji.sample.wayline.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import org.apache.ibatis.annotations.Param;
/**
 * @author sean
@@ -9,4 +12,6 @@
 * @date 2022/6/1
 */
public interface IWaylineJobMapper extends BaseMapper<WaylineJobEntity> {
    Page<WaylineJobEntity> getPage(Page<WaylineJobEntity> waylineJobEntityPage, @Param("queryParam") WaylineJobQueryParam param, @Param("workspaceId") String workspaceId);
}
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
New file
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dji.sample.wayline.dao.IWaylineJobMapper">
    <select id="getPage" resultType="com.dji.sample.wayline.model.entity.WaylineJobEntity">
        SELECT job.* FROM wayline_job job
            LEFT JOIN wayline_file file ON job.file_id = file.wayline_id
        WHERE job.workspace_id = #{workspaceId}
            <if test="queryParam.taskType != null and queryParam.taskType!= '' or  queryParam.taskType==0 ">
                AND job.task_type = #{queryParam.taskType}
            </if>
            <if test="queryParam.name != null and queryParam.name != '' ">
                AND (  (job.name LIKE CONCAT('%',#{queryParam.name},'%'))or(file.name LIKE CONCAT('%',#{queryParam.name},'%'))  )
            </if>
            <if test="queryParam.status != null and queryParam.status !='' ">
                AND job.status in
                <foreach collection="queryParam.status.split(',')" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="queryParam.startTime !=null and queryParam.endTime !=null">
                AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d')  &gt;=  DATE_FORMAT(#{queryParam.startTime},'%Y-%m-%d')
            </if>
            <if test="queryParam.endTime !=null and queryParam.endTime !=null">
                AND DATE_FORMAT(FROM_UNIXTIME(job.end_time/1000,'%Y-%m-%d'),'%Y-%m-%d')   &lt;= DATE_FORMAT(#{queryParam.endTime},'%Y-%m-%d')
            </if>
            <if test="queryParam.dockSn != null and queryParam.dockSn != '' ">
                AND job.dock_sn in
                <foreach collection="queryParam.dockSn.split(',')" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
    </select>
</mapper>
src/main/java/com/dji/sample/wayline/model/param/WaylineJobQueryParam.java
New file
@@ -0,0 +1,43 @@
package com.dji.sample.wayline.model.param;
import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 航线计划查询参数
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WaylineJobQueryParam {
    /**
     * 状态(逗号分隔字符串)
     */
    private String status;
    /**
     * 航线名或计划名
     */
    private String name;
    /**
     * 航线计划类型
     */
    private Integer taskType;
    //开始时间
    private String startTime;
    //结束时间
    private String endTime;
    /**
     * 设备编码
     */
    private String dockSn;
}
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -8,6 +8,7 @@
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import org.springframework.messaging.MessageHeaders;
import java.sql.SQLException;
@@ -112,7 +113,7 @@
     * @param pageSize
     * @return
     */
    PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize);
    PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize, WaylineJobQueryParam waylineJobQueryParam);
    /**
     * Process to get interface data of flight mission resources.
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -30,6 +30,7 @@
import com.dji.sample.wayline.model.enums.*;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.dji.sample.wayline.service.IWaylineRedisService;
@@ -394,12 +395,22 @@
    }
    @Override
    public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize) {
        Page<WaylineJobEntity> pageData = mapper.selectPage(
                new Page<WaylineJobEntity>(page, pageSize),
                new LambdaQueryWrapper<WaylineJobEntity>()
                        .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
                        .orderByDesc(WaylineJobEntity::getId));
    public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize, WaylineJobQueryParam waylineJobQueryParam) {
//        Page<WaylineJobEntity> pageData = mapper.selectPage(
//                new Page<WaylineJobEntity>(page, pageSize),
//                new LambdaQueryWrapper<WaylineJobEntity>()
//                        .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
//                        .eq(waylineJobDTO.getTaskType() !=null, WaylineJobEntity::getTaskType, waylineJobDTO.getTaskType())
//                        .eq(waylineJobDTO.getStatus()!=null, WaylineJobEntity::getStatus, waylineJobDTO.getStatus())
//                        .like(StringUtils.hasText(waylineJobDTO.getJobName()),WaylineJobEntity::getName,waylineJobDTO.getJobName())
//
//
//                        .orderByDesc(WaylineJobEntity::getId));
        Page<WaylineJobEntity> pageData = mapper.getPage(new Page<WaylineJobEntity>(page, pageSize),waylineJobQueryParam,workspaceId);
        List<WaylineJobDTO> records = pageData.getRecords()
                .stream()
                .map(this::entity2Dto)