<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"../spring/mybatis-3-mapper.dtd">
<mapper namespace="com.haier.openplatform.jsjksh.dao.ReportManageDao">
<!-- mysql 分页头 -->
<sql id="pagination_Head" >
<![CDATA[]]>
</sql>
<!-- mysql 分页尾 -->
<sql id="pagination_Tail">
<![CDATA[limit #{pageNo}, #{pageSize}]]>
</sql>
<sql id="query_condition_sql">
<if test="fhjd!= null and fhjd!=''">
and b.FHJD like CONCAT('%',#{fhjd},'%')
</if>
<if test="tdlnr!= null and tdlnr!=''">
and b.TDLNR like CONCAT('%',#{tdlnr},'%')
</if>
<if test="beginDate!= null and beginDate!=''">
and b.ERDAT >= STR_TO_DATE(#{beginDate},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endDate!= null and endDate!=''">
<![CDATA[and b.ERDAT < STR_TO_DATE(#{endDate},'%Y-%m-%d %H:%i:%s')]]>
</if>
</sql>
<sql id="query_condition_sql_2">
<if test="fhjd !=null and fhjd != ''">
AND A.FHJD = #{fhjd}
</if>
<if test="tdlnr !=null and tdlnr != ''">
AND A.TDLNR = #{tdlnr}
</if>
<if test="erdat !=null and erdat != ''">
AND A.ERDAT >= STR_TO_DATE(#{erdat},'%Y-%m-%d %H:%i:%s')
</if>
<if test="erdat1 !=null and erdat1 != ''">
<![CDATA[AND A.ERDAT < STR_TO_DATE(#{erdat1},'%Y-%m-%d %H:%i:%s')]]>
</if>
</sql>
<select id="getYdDjPjList" parameterType="map" resultType="com.haier.openplatform.jsjksh.model.RptYdDjPjBean">
SELECT FHJD,TDLNR,NAME1,totalCount,IFNULL(noArrivedCount,0)as noArrivedCount,allDoneCount,partDoneCount,djCount,wdjCount,djRadio,veryGood,good,notGood,noPj,IFNULL(goodRadio,'0%')as goodRadio
from
(select table_djl_and_radio.FHJD,table_djl_and_radio.TDLNR,table_djl_and_radio.NAME1,totalCount,noArrivedCount,IFNULL(allDoneCount,0)as allDoneCount,IFNULL(partDoneCount,0)as partDoneCount,
IFNULL(djCount,0)as djCount,IFNULL(wdjCount,0)as wdjCount,IFNULL(djRadio,'0%')as djRadio,IFNULL(veryGood,0)as veryGood,IFNULL(good,0)as good,
IFNULL(notGood,0)as notGood,IFNULL(noPj,0)as noPj,concat(truncate((veryGood+good)/(veryGood+good+notGood)* 100,0),'%')goodRadio
from
(select table_djCount.FHJD,table_djCount.TDLNR,table_djCount.NAME1, totalCount,noArrivedCount,allDoneCount,partDoneCount,
djCount,wdjCount,concat(truncate(djCount/totalCount* 100,0),'%')djRadio
from
(select table2.FHJD,table2.TDLNR,table2.NAME1,totalCount,noArrivedCount,allDoneCount,partDoneCount
from (
select table1.FHJD,table1.TDLNR,table1.NAME1, totalCount,noArrivedCount,allDoneCount
from (
(select total_djl_table.FHJD,total_djl_table.TDLNR,total_djl_table.NAME1, total_djl_table.totalCount,no_arrived_table.noArrivedCount
from
(select b.FHJD, b.TDLNR ,c.NAME1, sum(a.KWMENG) totalCount from in_ydmx a , in_ydgl b,in_cysgl c
<where>
a.tknum = b.tknum and b.TDLNR = c.TDLNR AND b.FHJD = c.FHJD and b.ADD1 != '0' AND c.ISAVAILABLE != '0'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) total_djl_table
left JOIN
(select b.FHJD, b.TDLNR,sum(a.KWMENG) noArrivedCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and (b.ydzt in('0','1','2') OR b.ydzt IS NULL)
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) no_arrived_table on total_djl_table.FHJD = no_arrived_table.FHJD
and total_djl_table.TDLNR = no_arrived_table.TDLNR) table1
left JOIN
(select b.FHJD, b.TDLNR ,sum(a.KWMENG) allDoneCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and b.ydzt = '3'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) all_done_table on table1.FHJD = all_done_table.FHJD
and table1.TDLNR = all_done_table.TDLNR)) table2
left JOIN
(select b.FHJD, b.TDLNR,sum(a.KWMENG) partDoneCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and b.ydzt = '4'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) part_done_table on table2.FHJD = part_done_table.FHJD
and table2.TDLNR = part_done_table.TDLNR) table_djCount
LEFT JOIN
(SELECT table10.FHJD,table10.TDLNR,IFNULL(table10.djCount,0) as djCount ,IFNULL(table11.wdjCount,0) as wdjCount,case when IFNULL(table10.djCount,0)+IFNULL(table11.wdjCount,0) > 0 then
concat(truncate(IFNULL(table10.djCount,0)/(IFNULL(table10.djCount,0)+IFNULL(table11.wdjCount,0))* 100,0),'%')
else '0%' end djRadio
FROM
(SELECT b.FHJD, b.TDLNR ,sum(a.KWMENG) djCount FROM in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
<![CDATA[
AND HOUR(TIMEDIFF((str_to_date(b.add3, '%Y-%m-%d %H')),DATE_ADD(STR_TO_DATE(b.erdat,'%Y-%m-%d %H'),INTERVAL 36 HOUR))) /24 <= #{cycleNum}
]]>
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) table10
LEFT JOIN
(SELECT b.FHJD, b.TDLNR, sum(a.KWMENG) wdjCount FROM in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
AND HOUR(TIMEDIFF((str_to_date(b.add3, '%Y-%m-%d %H')),DATE_ADD(STR_TO_DATE(b.erdat,'%Y-%m-%d %H'),INTERVAL 36 HOUR))) /24 > #{cycleNum}
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) table11 ON table10.FHJD = table11.FHJD AND table10.TDLNR = table11.TDLNR) table_djRadio
on table_djCount.FHJD = table_djRadio.FHJD
and table_djCount.TDLNR = table_djRadio.TDLNR) table_djl_and_radio
LEFT JOIN
(select aa.FHJD,aa.TDLNR,
MAX(CASE aa.KHPJ WHEN '1' THEN totalCount ELSE 0 END ) veryGood,
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END ) good,
MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END ) notGood,
MAX(CASE aa.KHPJ WHEN '签收未评价' THEN totalCount ELSE 0 END ) noPj,
concat(truncate((MAX(CASE aa.KHPJ WHEN '1' THEN totalCount ELSE 0 END ) +
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END ))/
(MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END ) +
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END) + MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END)) * 100,0),'%') as goodRadio
from (select stt.FHJD,stt.TDLNR,stt.KHPJ,count(1) totalCount
from (select b.ROW_ID,b.FHJD, b.TDLNR,(case when b.KHPJ IN ('1','2','3') THEN
b.KHPJ else '签收未评价' end) KHPJ from in_ydgl b
<where> b.YDZT = 3 and b.ADD1 != '0'
<include refid="query_condition_sql"/>
</where>
) stt
GROUP BY stt.FHJD,stt.TDLNR,stt.KHPJ) aa
group by aa.FHJD, aa.TDLNR) table_pj
on table_djl_and_radio.FHJD = table_pj.FHJD AND table_djl_and_radio.TDLNR = table_pj.TDLNR) as first_table
<include refid="pagination_Tail"/>
</select>
<select id="getYdDjPjTotalCount" parameterType="map" resultType="java.lang.Long">
select count(1)
from
(select table_djCount.FHJD,table_djCount.TDLNR,table_djCount.NAME1, totalCount,noArrivedCount,allDoneCount,partDoneCount,
djCount,wdjCount,djRadio
from
(select table2.FHJD,table2.TDLNR,table2.NAME1,totalCount,noArrivedCount,allDoneCount,partDoneCount
from (
select table1.FHJD,table1.TDLNR,table1.NAME1, totalCount,noArrivedCount,allDoneCount
from (
(select total_djl_table.FHJD,total_djl_table.TDLNR,total_djl_table.NAME1, total_djl_table.totalCount,no_arrived_table.noArrivedCount
from
(select b.FHJD, b.TDLNR ,c.NAME1, sum(a.KWMENG) totalCount from in_ydmx a , in_ydgl b,in_cysgl c
<where> a.tknum = b.tknum and b.TDLNR = c.TDLNR AND b.FHJD = c.FHJD and b.ADD1 != '0'AND c.ISAVAILABLE != '0'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) total_djl_table
left JOIN
(select b.FHJD, b.TDLNR,sum(a.KWMENG) noArrivedCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and (b.ydzt in('0','1','2') OR b.ydzt IS NULL)
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) no_arrived_table on total_djl_table.FHJD = no_arrived_table.FHJD
and total_djl_table.TDLNR = no_arrived_table.TDLNR) table1
left JOIN
(select b.FHJD, b.TDLNR ,sum(a.KWMENG) allDoneCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and b.ydzt = '3'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) all_done_table on table1.FHJD = all_done_table.FHJD
and table1.TDLNR = all_done_table.TDLNR)) table2
left JOIN
(select b.FHJD, b.TDLNR,sum(a.KWMENG) partDoneCount from in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
and b.ydzt = '4'
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) part_done_table on table2.FHJD = part_done_table.FHJD
and table2.TDLNR = part_done_table.TDLNR) table_djCount
LEFT JOIN
(SELECT table10.FHJD,table10.TDLNR,table10.djCount,table11.wdjCount,concat(truncate(table10.djCount/(table10.djCount+table11.wdjCount)* 100,0),'%') djRadio
FROM
(SELECT b.FHJD, b.TDLNR ,sum(a.KWMENG) djCount FROM in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
<![CDATA[
AND HOUR(TIMEDIFF((str_to_date(b.add3, '%Y-%m-%d %H')),DATE_ADD(STR_TO_DATE(b.erdat,'%Y-%m-%d %H'),INTERVAL 36 HOUR))) /24 <= #{cycleNum}
]]>
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) table10
LEFT JOIN
(SELECT b.FHJD, b.TDLNR, sum(a.KWMENG) wdjCount FROM in_ydmx a , in_ydgl b
<where> a.tknum = b.tknum and b.ADD1 != '0'
AND HOUR(TIMEDIFF((str_to_date(b.add3, '%Y-%m-%d %H')),DATE_ADD(STR_TO_DATE(b.erdat,'%Y-%m-%d %H'),INTERVAL 36 HOUR))) /24 > #{cycleNum}
<include refid="query_condition_sql"/>
</where>
GROUP BY b.FHJD, b.TDLNR) table11 ON table10.FHJD = table11.FHJD AND table10.TDLNR = table11.TDLNR) table_djRadio
on table_djCount.FHJD = table_djRadio.FHJD
and table_djCount.TDLNR = table_djRadio.TDLNR) table_djl_and_radio
LEFT JOIN
(select aa.FHJD,aa.TDLNR,
MAX(CASE aa.KHPJ WHEN '1' THEN totalCount ELSE 0 END ) veryGood,
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END ) good,
MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END ) notGood,
MAX(CASE aa.KHPJ WHEN '签收未评价' THEN totalCount ELSE 0 END ) noPj,
concat(truncate((MAX(CASE aa.KHPJ WHEN '1' THEN totalCount ELSE 0 END ) +
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END ))/
(MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END ) +
MAX(CASE aa.KHPJ WHEN '2' THEN totalCount ELSE 0 END) + MAX(CASE aa.KHPJ WHEN '3' THEN totalCount ELSE 0 END)) * 100,0),'%') as goodRadio
from (select stt.FHJD,stt.TDLNR,stt.KHPJ,count(1) totalCount
from (select b.ROW_ID,b.FHJD, b.TDLNR,(case when b.KHPJ IN ('1','2','3') THEN
b.KHPJ else '签收未评价' end) KHPJ from in_ydgl b
<where> b.YDZT = 3 and b.ADD1 != '0'
<include refid="query_condition_sql"/>
</where>
) stt
GROUP BY stt.FHJD,stt.TDLNR,stt.KHPJ) aa
group by aa.FHJD, aa.TDLNR) table_pj
on table_djl_and_radio.FHJD = table_pj.FHJD AND table_djl_and_radio.TDLNR = table_pj.TDLNR
</select>
<select id="getCysCollectTypeRpt" parameterType="map" resultType="com.haier.openplatform.jsjksh.model.CysCollectTypeRpt">
select tb3.TDLNR,CONCAT(tb3.FHJD ,'-', tb3.NAME1) AS name1 ,
ROUND((IFNULL(tb3.sysCount,0)/IFNULL(tb3.allCount,1))*100,2) as sysCountRadio,
ROUND((IFNULL(tb3.appCount,0)/IFNULL(tb3.allCount,1))*100,2) as appCountRadio,
ROUND((IFNULL(tb3.webCount,0)/IFNULL(tb3.allCount,1))*100,2) as webCountRadio,
ROUND((IFNULL(( IFNULL(tb3.allCount,0)-
IFNULL(tb3.sysCount,0)-
IFNULL(tb3.appCount,0)-
IFNULL(tb3.webCount,0)-IFNULL(no_node.noNodeCount,0)),0)/IFNULL(tb3.allCount,1))*100,2) as mixCountRadio,
ROUND((IFNULL(no_node.noNodeCount,0)/IFNULL(tb3.allCount,1))*100,2) as noNodeCountRadio,
IFNULL(tb3.allCount,0) as allCount,
IFNULL(tb3.sysCount,0) as sysCount,
IFNULL(tb3.appCount,0) as appCount,
IFNULL(tb3.webCount,0) as webCount,
IFNULL(( IFNULL(tb3.allCount,0)-
IFNULL(tb3.sysCount,0)-
IFNULL(tb3.appCount,0)-
IFNULL(tb3.webCount,0)-IFNULL(no_node.noNodeCount,0)),0) mixCount,
IFNULL(no_node.noNodeCount,0) noNodeCount FROM
(select tb2.FHJD,tb2.TDLNR,tb2.NAME1,tb2.allCount,tb2.sysCount,tb2.appCount,web_tb.webCount FROM (
(select tb1.FHJD,tb1.TDLNR,tb1.NAME1,tb1.allCount, tb1.sysCount,app_tb.appCount from
(select base_t.FHJD,base_t.TDLNR,base_t.NAME1,sys_table.sysCount, base_t.allCount from (select DISTINCT A.FHJD, s.TDLNR,s.NAME1, count(1) allCount
from in_cysgl s,in_ydgl A
<where> A.TDLNR = s.TDLNR
and A.tdlnr != 'LB001001'
and A.ADD1 = '1'
AND s.ISAVAILABLE='1'
<include refid="query_condition_sql_2"/>
</where>
GROUP BY A.FHJD,A.TDLNR,s.NAME1) base_t
LEFT JOIN
(SELECT AA.FHJD,AA.TDLNR, COUNT(DISTINCT TKNUM) sysCount FROM (
SELECT
DISTINCT A.FHJD,A.TKNUM,A.TDLNR
FROM
in_ydgl A, in_wlxq B
<where> A.TKNUM = B.TKNUM
and B.CYSBJ in ('KT', 'YHX', 'HL', 'XYT')
AND A.tdlnr != 'LB001001'
and A.ADD1 = '1'
<include refid="query_condition_sql_2"/>
and A.YDZT IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.CYSBJ != B.CYSBJ
AND T.FLAG IS NULL
AND T.CYSBJ IS NOT NULL
AND T.TKNUM = A.TKNUM)
and EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.ADD2 in ('1','2')
AND T.FLAG IS NULL
AND T.TKNUM = A.TKNUM)) AA
GROUP BY AA.FHJD,AA.TDLNR
</where>) sys_table
on base_t.FHJD = sys_table.FHJD AND base_t.TDLNR = sys_table.TDLNR ) tb1
LEFT JOIN
(SELECT AA.FHJD,AA.TDLNR, COUNT(DISTINCT AA.TKNUM) appCount FROM (
SELECT
DISTINCT A.FHJD,A.TKNUM,A.TDLNR
FROM
in_ydgl A, in_wlxq B
<where> A.TKNUM = B.TKNUM
and B.CYSBJ = 'APP'
AND A.tdlnr != 'LB001001'
and A.ADD1 = '1'
<include refid="query_condition_sql_2"/>
and A.YDZT IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.CYSBJ != B.CYSBJ
AND T.FLAG IS NULL
AND T.CYSBJ IS NOT NULL
AND T.TKNUM = A.TKNUM)
and EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.ADD2 in ('1','2')
AND T.FLAG IS NULL
AND T.TKNUM = A.TKNUM)) AA
GROUP BY AA.FHJD,AA.TDLNR
</where>) app_tb
on tb1.FHJD = app_tb.FHJD and tb1.tdlnr = app_tb.tdlnr) tb2
LEFT JOIN
(SELECT AA.FHJD,AA.TDLNR, COUNT(DISTINCT TKNUM) webCount FROM (
SELECT
DISTINCT A.FHJD,A.TKNUM,A.TDLNR
FROM
in_ydgl A, in_wlxq B
<where> A.TKNUM = B.TKNUM
and B.CYSBJ = 'WEB'
AND A.tdlnr != 'LB001001'
and A.add1 = '1'
<include refid="query_condition_sql_2"/>
and A.YDZT IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.CYSBJ != B.CYSBJ
AND T.FLAG IS NULL
AND T.CYSBJ IS NOT NULL
AND T.TKNUM = A.TKNUM)
and EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.ADD2 in ('1','2')
AND T.FLAG IS NULL
AND T.TKNUM = A.TKNUM)
</where>) AA
GROUP BY AA.FHJD,AA.TDLNR) web_tb
on tb2.FHJD = web_tb.FHJD and tb2.TDLNR = web_tb.TDLNR )) tb3
LEFT JOIN
(SELECT AA.FHJD,AA.TDLNR, COUNT(DISTINCT TKNUM) noNodeCount FROM
(SELECT
DISTINCT A.FHJD,A.TKNUM,A.TDLNR
FROM
in_ydgl A
<where> A.tdlnr != 'LB001001'
and A.add1 = '1'
<include refid="query_condition_sql_2"/>
AND not EXISTS (SELECT 1 FROM in_wlxq T
WHERE T.ADD2 in ('1','2')
AND T.FLAG IS NULL
AND T.TKNUM = A.TKNUM
</where>)) AA
GROUP BY AA.FHJD, AA.TDLNR) no_node
on tb3.FHJD = no_node.FHJD and tb3.TDLNR = no_node.TDLNR
</select>
</mapper>
本文介绍了一个复杂的MyBatis映射文件配置,详细展示了如何使用动态SQL实现分页查询和多条件筛选,包括日期范围、字符串匹配等。通过嵌套的SQL片段和参数传递,实现了对大量数据的有效管理和高效检索。
6847

被折叠的 条评论
为什么被折叠?



