李林
2024-01-09 d0c3258ed4871f2b9f03357bfd39b6caeff156b0
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
<?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.yuanchu.mom.mapper.DataReportingMapper">
 
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DataReporting">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="department" column="department" jdbcType="VARCHAR"/>
        <result property="registrant" column="registrant" jdbcType="VARCHAR"/>
        <result property="product" column="product" jdbcType="VARCHAR"/>
        <result property="channel" column="channel" jdbcType="VARCHAR"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="showNum" column="show_num" jdbcType="INTEGER"/>
        <result property="click" column="click" jdbcType="INTEGER"/>
        <result property="accountConsumption" column="account_consumption" jdbcType="DECIMAL"/>
        <result property="rebateConsumption" column="rebate_consumption" jdbcType="DECIMAL"/>
        <result property="consumption" column="consumption" jdbcType="DECIMAL"/>
        <result property="discountedConsumption" column="discounted_consumption" jdbcType="DECIMAL"/>
        <result property="fansAdd" column="fans_add" jdbcType="INTEGER"/>
        <result property="actualCost" column="actual_cost" jdbcType="DECIMAL"/>
        <result property="internalCosts" column="internal_costs" jdbcType="DECIMAL"/>
        <result property="customerCosts" column="customer_costs" jdbcType="DECIMAL"/>
        <result property="profit" column="profit" jdbcType="DECIMAL"/>
        <result property="agentRebate" column="agent_rebate" jdbcType="DECIMAL"/>
        <result property="customerRebate" column="customer_rebate" jdbcType="DECIMAL"/>
        <result property="remark" column="remark" jdbcType="DECIMAL"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
        <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
        <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
    </resultMap>
 
    <select id="selectDataReportingDtoPageList" resultType="com.yuanchu.mom.dto.DataReportingPageDto">
        select * from (
        select dr.*,u1.name create_user_name,u2.name update_user_name from data_reporting dr
        left join user u1 on dr.create_user = u1.id
        left join user u2 on dr.update_user = u2.id
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectProductCountDtoPageList" resultType="com.yuanchu.mom.dto.ProductCountDto">
        select * from (
        select update_time, create_time, product, sum(consumption) consumption, sum(fans_add) fans_add,
        sum(customer_costs) customer_costs, create_user
        from data_reporting
        group by product,date_format(create_time, '%Y-%m-%d')
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectRegistrantCountDtoPageList" resultType="com.yuanchu.mom.dto.RegistrantCountDto">
        select * from (
        select id, department, registrant, product, name, sum(show_num) show_num, sum(click) click,
        sum(account_consumption)account_consumption, sum(rebate_consumption)
        rebate_consumption,(sum(rebate_consumption)+sum(remark)) rebate_consumption2, sum(discounted_consumption)
        discounted_consumption, sum(fans_add) fans_add, sum(actual_cost) actual_cost, sum(customer_costs)
        customer_costs, sum(profit) profit, sum(agent_rebate) agent_rebate, sum(customer_rebate) customer_rebate,
        sum(remark) remark, create_time, update_time, create_user
        from data_reporting
        group by registrant,date_format(create_time, '%Y-%m-%d')
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getDataFor1" resultType="java.util.Map">
        select COALESCE(sum(account_consumption), 0) data1,
               COALESCE(sum(consumption), 0)         data2,
               COALESCE(sum(customer_costs), 0)      data3,
               COALESCE(sum(actual_cost), 0)         data4
        from data_reporting
        where date(create_time) like (CURDATE() - INTERVAL 1 DAY)
    </select>
    <select id="getDataFor2" resultType="java.util.Map">
        SELECT sum(account_consumption)             account_consumptions,
               DATE_FORMAT(create_time, '%m-%d')    `date`,
               DATE_FORMAT(create_time, '%y-%m-%d') time
        FROM data_reporting
        group by DATE_FORMAT(create_time, '%y-%m-%d')
        having DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt; time
           and time &lt; CURDATE()
    </select>
    <select id="getDataFor3" resultType="java.util.Map">
        SELECT sum(consumption)                     consumption,
               DATE_FORMAT(create_time, '%m-%d')    `date`,
               DATE_FORMAT(create_time, '%y-%m-%d') time
        FROM data_reporting
        group by DATE_FORMAT(create_time, '%y-%m-%d')
        having DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt; time
           and time &lt; CURDATE()
    </select>
    <select id="getDataFor4" resultType="java.util.Map">
        select product, sum(customer_costs) customerCosts
        from data_reporting
        group by product
        order by customerCosts desc
        limit 7
    </select>
    <select id="getDataFor5" resultType="java.util.Map">
        select product, sum(actual_cost) actualCost
        from data_reporting
        group by product
        order by actualCost desc
        limit 7
    </select>
    <select id="selectUser" resultType="java.util.Map">
        select user.department, user.name, user.account
        from user
        where id = #{userId}
    </select>
 
    <select id="selectDataComparisonDtoPageList" resultType="com.yuanchu.mom.dto.DataComparisonDto">
        select a.account             account,
               a.name                name,
               a.account_consumption consumption,
               b.account             comparisonAccount,
               b.name                comparisonName,
               b.account_consumption comparisonConsumption
        from (select dr1.*, user.id uId, user.name uName, user.account
                from data_reporting dr1
                join user on dr1.create_user = user.id
                where date_format(dr1.create_time, '%Y-%m-%d') =
                      date_format(#{dataComparisonDto.createTime}, '%Y-%m-%d')
                and user.name = #{dataComparisonDto.name}) a
        left join (select dr2.*, user.id uId, user.name uName, user.account
                    from data_reporting dr2
                    join user on dr2.create_user = user.id
                    where date_format(dr2.create_time, '%Y-%m-%d') =
                          date_format(#{dataComparisonDto.createTime}, '%Y-%m-%d')
                    and user.name = #{dataComparisonDto.comparisonName}) b
                    on a.name = b.name
                    and a.product = b.product
        where (a.account_consumption != b.account_consumption
            or b.account_consumption is null)
    </select>
</mapper>