luodangjia
2024-12-10 2eb44e7d245d82afd32ad2c46eaba6efa8a3d9a0
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?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.TIndexMenuMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TIndexMenu">
        <id column="id" property="id" />
        <result column="menu_name" property="menuName" />
        <result column="menu_sort" property="menuSort" />
        <result column="create_by" property="createBy" />
        <result column="create_time" property="createTime" />
        <result column="is_delete" property="isDelete" />
    </resultMap>
    <resultMap id="tree" type="com.ruoyi.system.dto.AllertTitleDto">
        <id column="tid" property="id" />
        <result column="titile_name" property="name" />
        <collection property="children" ofType="com.ruoyi.system.domain.TTitleMajor">
            <id column="id" property="id"/>
            <result column="major_name" property="majorName" />
        </collection>
    </resultMap>
 
 
    <resultMap id="regionTree" type="com.ruoyi.system.dto.RegionDto">
        <result column="province_name" property="name" />
        <collection property="children" ofType="com.ruoyi.system.dto.RegionChildrenDto">
            <id column="id" property="id"/>
            <result column="major_name" property="name" />
        </collection>
    </resultMap>
 
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, menu_name, menu_sort, create_by, create_time, is_delete
    </sql>
    <select id="allert" resultMap="tree">
        SELECT tt.id as tid, tt.titile_name,tm.id,tm.major_name
        FROM t_technical_title tt
                 LEFT JOIN t_title_major tm  on tm.technical_id = tt.id
        WHERE 1=1 and tt.is_delete = 0 and tm.is_delete = 0
        <if test="cityCode != null and cityCode.size() > 0">
            <foreach collection="cityCode" item="id"  separator=",">
                OR   FIND_IN_SET(#{id}, tm.region_ids)
            </foreach>
        </if>
 
 
    </select>
    <select id="userUp" resultType="java.util.Map">
        SELECT
            m.month AS MONTH,
    COALESCE(t.count, 0) AS count
        FROM
            (SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month
            UNION ALL
            SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m')
            UNION ALL
            SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m')
            UNION ALL
            SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m')
            UNION ALL
            SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')
            UNION ALL
            SELECT DATE_FORMAT(CURDATE(), '%Y-%m')) m
            LEFT JOIN (
            SELECT
            DATE_FORMAT(create_time, '%Y-%m') AS MONTH,
            COUNT(1) AS count
            FROM
            t_app_user
            WHERE
            create_time >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
            GROUP BY
            DATE_FORMAT(create_time, '%Y-%m')
            ) t ON m.month = t.MONTH
        ORDER BY
            m.month;
 
 
    </select>
    <select id="dayCount" resultType="java.util.Map">
        SELECT
            h.TIME,
            COALESCE(o.orderCount, 0) AS orderCount,
            COALESCE(o.goodType1Count, 0) AS goodType1Count,
            COALESCE(o.goodType2Count, 0) AS goodType2Count,
            COALESCE(o.goodType3Count, 0) AS goodType3Count
        FROM
            (SELECT DISTINCT LPAD(HOUR(TIMESTAMPADD(HOUR, h.n, '1970-01-01 00:00:00')), 2, '0') + ':00' AS TIME
             FROM (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
                 SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
                 SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL
                 SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23) h) h
                LEFT JOIN (
                SELECT
                    DATE_FORMAT(create_time, '%H:00') AS TIME,
        COUNT(1) AS orderCount,
        SUM(CASE WHEN good_type = 1 THEN 1 ELSE 0 END) AS goodType1Count,
        SUM(CASE WHEN good_type = 2 THEN 1 ELSE 0 END) AS goodType2Count,
        SUM(CASE WHEN good_type = 3 THEN 1 ELSE 0 END) AS goodType3Count
                FROM
                    t_order
                WHERE  DATE(create_time ) = CURDATE()
        <if test="paymentStatus != null ">
            AND payment_status = #{paymentStatus}
        </if>
                GROUP BY
                    DATE_FORMAT(create_time, '%H:00')
            ) o ON h.TIME = o.TIME
        ORDER BY
            h.TIME
    </select>
    <select id="weekCount" resultType="java.util.Map">
        SELECT
            d.date AS TIME,
    COALESCE(SUM(CASE WHEN o.good_type = 1 THEN 1 ELSE 0 END), 0) AS goodType1Count,
    COALESCE(SUM(CASE WHEN o.good_type = 2 THEN 1 ELSE 0 END), 0) AS goodType2Count,
    COALESCE(SUM(CASE WHEN o.good_type = 3 THEN 1 ELSE 0 END), 0) AS goodType3Count
        FROM
            (SELECT DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL n DAY AS date
            FROM (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) n) d
            LEFT JOIN
            t_order o ON DATE(o.create_time) = d.date
        <if test="paymentStatus != null ">
            AND o.payment_status = #{paymentStatus}
        </if>
        GROUP BY
            d.date
        ORDER BY
            d.date
    </select>
    <select id="monthCount" resultType="java.util.Map">
        SELECT
        d.date AS TIME,
        COALESCE(SUM(CASE WHEN o.good_type = 1 THEN 1 ELSE 0 END), 0) AS goodType1Count,
        COALESCE(SUM(CASE WHEN o.good_type = 2 THEN 1 ELSE 0 END), 0) AS goodType2Count,
        COALESCE(SUM(CASE WHEN o.good_type = 3 THEN 1 ELSE 0 END), 0) AS goodType3Count
        FROM
        (SELECT DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE()) - 1 DAY) + INTERVAL n DAY AS date
        FROM (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
        SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
        SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
        SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
        SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL
        SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL
        SELECT 30 UNION ALL SELECT 31) n
        WHERE DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE()) - 1 DAY) + INTERVAL n DAY &lt;= LAST_DAY(CURDATE())) d
        LEFT JOIN
        t_order o ON DATE(o.create_time) = d.date
        <if test="paymentStatus != null ">
            AND o.payment_status = #{paymentStatus}
        </if>
        GROUP BY
        d.date
        ORDER BY
        d.date
    </select>
    <select id="yearCount" resultType="java.util.Map">
        SELECT
            d.month AS TIME,
    COALESCE(SUM(CASE WHEN o.good_type = 1 THEN 1 ELSE 0 END), 0) AS goodType1Count,
    COALESCE(SUM(CASE WHEN o.good_type = 2 THEN 1 ELSE 0 END), 0) AS goodType2Count,
    COALESCE(SUM(CASE WHEN o.good_type = 3 THEN 1 ELSE 0 END), 0) AS goodType3Count,
        o.payment_amount
        FROM
            (SELECT CONCAT(YEAR(CURDATE()), '-', LPAD(n, 2, '0')) AS month
            FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
            SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL
            SELECT 11 UNION ALL SELECT 12) n) d
            LEFT JOIN
            t_order o ON DATE_FORMAT(o.create_time, '%Y-%m') = d.month
        <if test="paymentStatus != null ">
            AND o.payment_status = #{paymentStatus}
        </if>
        GROUP BY
            d.month
        ORDER BY
            d.month
    </select>
    <select id="searchDayCount" resultType="java.util.Map">
        SELECT
        d.date AS TIME,
        COALESCE(SUM(CASE WHEN o.good_type = 1 THEN 1 ELSE 0 END), 0) AS goodType1Count,
        COALESCE(SUM(CASE WHEN o.good_type = 2 THEN 1 ELSE 0 END), 0) AS goodType2Count,
        COALESCE(SUM(CASE WHEN o.good_type = 3 THEN 1 ELSE 0 END), 0) AS goodType3Count
        FROM
        (SELECT
        DATE_ADD(#{startDate}, INTERVAL n DAY) AS date
        FROM
        (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
        SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
        SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
        SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
        SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL
        SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL
        SELECT 30 UNION ALL SELECT 31) n
        WHERE
        DATE_ADD(#{startDate}, INTERVAL n DAY) &lt;= #{endDate}) d
        LEFT JOIN
        t_order o ON DATE(o.create_time) = d.date
        <if test="paymentStatus != null ">
            AND o.payment_status = #{paymentStatus}
        </if>
        GROUP BY
        d.date
        ORDER BY
        d.date;
 
    </select>
    <select id="count1" resultType="java.util.Map">
        select  sum(payment_amount),count(1)
            from t_order
        <where>
            <if test="dayType == 1">
               and  DATE(create_time ) = CURDATE()
            </if>
            <if test="dayType == 2">
                AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)
            </if>
            <if test="dayType == 3">
                AND YEAR(create_time) = YEAR(CURDATE()) AND MONTH(create_time) = MONTH(CURDATE())
            </if>
            <if test="dayType == 4">
                AND YEAR(create_time) = YEAR(CURDATE())
            </if>
            <if test="dayType == 5">
                AND DATE(create_time) &gt;= #{startDate} and DATE(create_time) &lt;= #{endDate}
            </if>
            <if test="paymentStatus!=null">
                AND payment_status = #{paymentStatus}
            </if>
        </where>
    </select>
 
</mapper>