TransArriveAnalysisMapper.xml 6.8 KB
<?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.tianbo.analysis.dao.TransArriveAnalysisMapper" >
    <resultMap id="BaseResultMap" type="com.tianbo.analysis.model.TransArriveAnalysis" >
        <result column="CREATTIME" property="date" jdbcType="VARCHAR" />
        <result column="DATE_NAME" property="dateName" jdbcType="VARCHAR" />
        <result column="TOTAL_WEIGHT" property="totalWeight" jdbcType="DECIMAL" />
        <result column="TOTAL_COUNT" property="totalCount" jdbcType="DECIMAL" />
        <result column="_TYPE" property="type" jdbcType="DECIMAL" />
    </resultMap>

    <sql id="Month_Column_List" >
        CREATTIME,DATE_NAME,TOTAL_WEIGHT,TOTAL_COUNT,_TYPE
    </sql>

    <sql id="thisWeekAnalysisSql">
        -- 本周每日统计
        WITH date_range AS (
        SELECT TRUNC(SYSDATE, 'IW')  + LEVEL - 1 AS date_val
        FROM DUAL
        CONNECT BY LEVEL &lt;= 7
        )
        SELECT
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD') AS CREATTIME,
        COALESCE(SUM(GROSSWT), 0) AS TOTAL_WEIGHT,
        COUNT(BILLNO) AS TOTAL_COUNT,
        CASE
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'MON' THEN '周一'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'TUE' THEN '周二'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'WED' THEN '周三'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'THU' THEN '周四'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'FRI' THEN '周五'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'SAT' THEN '周六'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'SUN' THEN '周日'
        END AS DATE_NAME,
        'thisWeek' AS _TYPE
        FROM
        date_range
        LEFT JOIN
        CGONMS.TRANS_TO_ARRIVE_EXPORT
        ON
        date_range.date_val = TRUNC(ARRIVETIME)
        GROUP BY
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD'),
        TO_CHAR(date_range.date_val, 'DY'),
        _TYPE
        ORDER BY
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD')
    </sql>
    <sql id="lastWeekAnalysisSql">
        -- 上周每日统计
        WITH date_range AS (
        SELECT TRUNC(SYSDATE, 'IW') - 7 + LEVEL - 1 AS date_val
        FROM DUAL
        CONNECT BY LEVEL &lt;= 7
        )
        SELECT
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD') AS CREATTIME,
        COALESCE(SUM(GROSSWT), 0) AS TOTAL_WEIGHT,
        COUNT(BILLNO) AS TOTAL_COUNT,
        CASE
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'MON' THEN '周一'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'TUE' THEN '周二'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'WED' THEN '周三'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'THU' THEN '周四'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'FRI' THEN '周五'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'SAT' THEN '周六'
        WHEN TO_CHAR(date_range.date_val, 'DY') = 'SUN' THEN '周日'
        END AS DATE_NAME,
        'lastWeek' AS _TYPE
        FROM
        date_range
        LEFT JOIN
        CGONMS.TRANS_TO_ARRIVE_EXPORT
        ON
        date_range.date_val = TRUNC(ARRIVETIME)
        GROUP BY
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD'),
        TO_CHAR(date_range.date_val, 'DY'),
        _TYPE
        ORDER BY
        TO_CHAR(date_range.date_val, 'YYYY-MM-DD')
    </sql>
    <sql id="lastYearAnalysisSql">
        -- 去年每月统计
        SELECT
            TO_CHAR(CREATTIME, 'YYYY-MM') AS CREATTIME,
            CASE
                WHEN TO_CHAR(CREATTIME, 'MM') = '01' THEN '一月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '02' THEN '二月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '03' THEN '三月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '04' THEN '四月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '05' THEN '五月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '06' THEN '六月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '07' THEN '七月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '08' THEN '八月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '09' THEN '九月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '10' THEN '十月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '11' THEN '十一月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '12' THEN '十二月'
            END AS DATE_NAME,
            SUM(GROSSWT) AS TOTAL_WEIGHT,
            count(BILLNO) AS TOTAL_COUNT,
            'lastYear' AS _TYPE
        FROM
            CGONMS.TRANS_TO_ARRIVE_EXPORT
        WHERE
        -- 去年数据
            EXTRACT(YEAR FROM CREATTIME) = EXTRACT(YEAR FROM SYSDATE) - 1
        GROUP BY
            TO_CHAR(CREATTIME, 'YYYY-MM'),
            TO_CHAR(CREATTIME, 'MM'),
            _TYPE
        ORDER BY
            TO_CHAR(CREATTIME, 'YYYY-MM')
    </sql>
    <sql id="thisYearAnalysisSql">
        -- 本年统计
        SELECT
            TO_CHAR(CREATTIME, 'YYYY-MM') AS CREATTIME,
            CASE
                WHEN TO_CHAR(CREATTIME, 'MM') = '01' THEN '一月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '02' THEN '二月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '03' THEN '三月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '04' THEN '四月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '05' THEN '五月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '06' THEN '六月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '07' THEN '七月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '08' THEN '八月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '09' THEN '九月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '10' THEN '十月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '11' THEN '十一月'
                WHEN TO_CHAR(CREATTIME, 'MM') = '12' THEN '十二月'
            END AS DATE_NAME,
            SUM(GROSSWT) AS TOTAL_WEIGHT,
            count(BILLNO) AS TOTAL_COUNT,
            'thisYear' AS _TYPE
        FROM
            CGONMS.TRANS_TO_ARRIVE_EXPORT
        WHERE
        -- 当年数据
            EXTRACT(YEAR FROM CREATTIME) = EXTRACT(YEAR FROM SYSDATE)
        GROUP BY
            TO_CHAR(CREATTIME, 'YYYY-MM'),
            TO_CHAR(CREATTIME, 'MM'),
            _TYPE
        ORDER BY
            TO_CHAR(CREATTIME, 'YYYY-MM')
    </sql>
    <select id="YearAnalysis" resultMap="BaseResultMap" >
        SELECT * FROM (
            SELECT * FROM (
                (<include refid="thisYearAnalysisSql"/>)
                union
                (<include refid="lastYearAnalysisSql"/>)
            )
        ) as T
        order by T.CREATTIME
    </select>

    <select id="WeekAnalysis" resultMap="BaseResultMap">
        SELECT * FROM (
            SELECT * FROM (
                (<include refid="thisWeekAnalysisSql"/>)
                union
                (<include refid="lastWeekAnalysisSql"/>)
            )
        ) as T
        order by T.CREATTIME
    </select>

</mapper>