puzhibing
2 天以前 ea7595c4c75926f85388574b261b8ba90cf60e0d
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?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.ruoyi.system.mapper.WarnMapper">
    
    
    <select id="getCarWarnList" resultType="com.ruoyi.system.query.CarWarnListResp">
        select b.vehicle_name as carName,
        b.vehicle_number as vehicleNumber,
        a.keep_warn as keepWarn,
        c.`name` as driverName,
        d.`name` as enterpriseName,
        a.terminal_number as terminalNumber,
        a.start_time as startTime,
        a.end_time as endTime,
        a.keep_time as keepTime,
        a.keep_distance as keepDistance,
        a.warn_type as warnType,
        a.warn_level as warnLevel,
        a.warn_source as warnSource,
        a.warn_number as warnNumber,
        a.treatment_state as treatmentState,
        a.treatment_user as treatmentUser,
        a.treatment_time as treatmentTime,
        a.treatment_remark as treatmentRemark
        from t_warn a
        left join t_car b on (a.car_id = b.id)
        left join t_driver c on (a.driver_id = c.id)
        left join t_enterprise d on (a.enterprise_id = d.id)
        <where>
            <if test="null != item.warnType and '' != item.warnType">
                and a.warn_type = #{item.warnType}
            </if>
            <if test="null != item.carType and '' != item.carType">
                and b.operate_type = #{item.carType}
            </if>
            <if test="null != item.vehicleNumber and '' != item.vehicleNumber">
                and b.vehicle_number like CONCAT('%', #{item.vehicleNumber}, '%')
            </if>
            <if test="null != item.driverName and '' != item.driverName">
                and c.`name` like CONCAT('%', #{item.driverName}, '%')
            </if>
            <if test="null != item.enterpriseName and '' != item.enterpriseName">
                and d.`name` like CONCAT('%', #{item.enterpriseName}, '%')
            </if>
            <if test="null != item.startTime and '' != item.startTime">
                and a.start_time >= #{item.startTime}
            </if>
            <if test="null != item.endTime and '' != item.endTime">
                and a.end_time &lt;= #{item.endTime}
            </if>
            <if test="null != item.treatmentState and '' != item.treatmentState">
                and a.treatment_state = #{item.treatmentState}
            </if>
        </where>
        order by a.create_time desc
    </select>
 
 
    <select id="getAllCarWarnList" resultType="com.ruoyi.system.api.model.Warn">
        select
        a.*
        from t_warn a
        left join t_car b on (a.car_id = b.id)
        left join t_driver c on (a.driver_id = c.id)
        left join t_enterprise d on (a.enterprise_id = d.id)
        <where>
            <if test="null != item.warnType and '' != item.warnType">
                and a.warn_type = #{item.warnType}
            </if>
            <if test="null != item.carType and '' != item.carType">
                and b.operate_type = #{item.carType}
            </if>
            <if test="null != item.vehicleNumber and '' != item.vehicleNumber">
                and b.vehicle_number like CONCAT('%', #{item.vehicleNumber}, '%')
            </if>
            <if test="null != item.driverName and '' != item.driverName">
                and c.`name` like CONCAT('%', #{item.driverName}, '%')
            </if>
            <if test="null != item.enterpriseName and '' != item.enterpriseName">
                and d.`name` like CONCAT('%', #{item.enterpriseName}, '%')
            </if>
            <if test="null != item.startTime and '' != item.startTime">
                and a.start_time >= #{item.startTime}
            </if>
            <if test="null != item.endTime and '' != item.endTime">
                and a.end_time &lt;= #{item.endTime}
            </if>
            <if test="null != item.treatmentState and '' != item.treatmentState">
                and a.treatment_state = #{item.treatmentState}
            </if>
        </where>
    </select>
 
    
    <select id="getWarnGroup10Count" resultType="map">
        select aa.warn_type as warnType, aa.num
        from (select COUNT(1) as num, warn_type from t_warn group by warn_type) as aa
        order by aa.num desc limit 10
    </select>
    
    
    <select id="getWarnGroupCount" resultType="map">
        select COUNT(1) as num, "其他" as warnType from t_warn where warn_type not in
        <foreach collection="collect" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
    
    
    <select id="getWarnGroupCountTop10" resultType="map">
        select *
        from (select COUNT(1) as num, b.`name`
              from t_warn a
              left join t_enterprise b on (a.enterprise_id = b.id)
              group by a.enterprise_id) as aa where aa.num > 0
        order by aa.num desc limit 10
    </select>
 
 
 
    <select id="getAllWarnGroupVehicleType" resultType="map">
        select
        ct.name,
        ifnull(aa.total, 0) as total,
        ifnull(bb.total, 0) as processed,
        ifnull(cc.total, 0) as unprocessed
        from t_car_type as ct
        left join (
            select
            b.operate_type,
            count(1) as total
            from t_warn a
            left join t_car b on (a.car_id = b.id)
            where a.car_id is not null group by b.operate_type
        ) aa on (ct.name = aa.operate_type)
        left join (
            select
            b.operate_type,
            count(1) as total
            from t_warn a
            left join t_car b on (a.car_id = b.id)
            where a.car_id is not null and a.treatment_state = '已处理' group by b.operate_type
        ) as bb on (ct.name = bb.operate_type)
        left join (
            select
            b.operate_type,
            count(1) as total
            from t_warn a
            left join t_car b on (a.car_id = b.id)
            where a.car_id is not null and a.treatment_state = '处理中' group by b.operate_type
        ) as cc on (ct.name = cc.operate_type)
    </select>
</mapper>