guoshilong
2023-11-13 68f80a7451a126335153ec00bb6cb520a5ae1f8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?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.*,
        ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM wayline_job WHERE parent_id = job.id ) AS hasChildren
        FROM wayline_job job
            LEFT JOIN wayline_file file ON job.file_id = file.wayline_id
        WHERE job.workspace_id = #{workspaceId} and job.parent_id is NULL
            <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>
        ORDER BY job.create_time DESC
 
    </select>
 
    <select id="getLatest" resultType="com.dji.sample.wayline.model.entity.WaylineJobEntity">
        SELECT job.* FROM wayline_job job
        WHERE job.workspace_id = #{workspaceId}
        <if test="queryParam.dockSn != null and queryParam.dockSn != '' ">
            AND job.dock_sn = #{queryParam.dockSn}
        </if>
        AND job.status = 1
        AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d')  &gt;=   DATE(NOW())
        AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d')   &lt;= DATE(NOW()) + INTERVAL 2 DAY
        ORDER BY job.begin_time - NOW() ASC
        LIMIT 1
 
 
    </select>
    <select id="getJobs" 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>
 
        <if test="queryParam.parentId != null and queryParam.parentId !='' ">
            AND job.parent_id = (SELECT id FROM wayline_job where job_id = #{queryParam.parentId})
        </if>
        ORDER BY job.create_time DESC
 
 
    </select>
    <select id="patrolStatistics" resultType="com.dji.sample.wayline.model.entity.WaylineJobEntity">
        SELECT
            *
        FROM
            wayline_job
        WHERE 1=1
          and status = 3
        <if test="queryTime != null and queryTime != ''">
           and ( FROM_UNIXTIME( execute_time / 1000, '%Y' ) = #{queryTime} OR FROM_UNIXTIME( execute_time / 1000, '%Y-%m' ) = #{queryTime} )
        </if>
        <if test="workspaceId != null and workspaceId != ''">
            and workspace_id = #{workspaceId}
        </if>
    </select>
</mapper>