局长信箱-后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

139 lines
8.1 KiB

<?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.biutag.lan.mapper.DataScreenMapper">
<select id="selectRecentlyMailList" resultType="com.biutag.lan.domain.Mail">
select a.id,contact_name,contact_phone,a.create_time ,b.name mail_state from mail a
left join dict_data b on a.mail_state=b.value
left join mail_mark c on a.id=c.mail_id
/* where c.resolved ='1' or satisfied='1'*/
order by a.create_time desc limit 20;
</select>
<select id="getCompletedRate" resultType="java.util.Map">
select b.second_dept_name name,CONCAT(ROUND(sum(COALESCE(b.completed, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.completed, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.completed, 0)) completed,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.category='2' GROUP BY second_dept_name order by rateNumber desc limit 10
</select>
<select id="getResolvedRate" resultType="java.util.Map">
select b.second_dept_name name,CONCAT(ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.resolved, 0)) resolved,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.category='2' GROUP BY second_dept_name order by rateNumber desc limit 10
</select>
<select id="getSatisfiedRate" resultType="java.util.Map">
select b.second_dept_name name,CONCAT(ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.satisfied, 0)) satisfied,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.category='2' GROUP BY second_dept_name order by rateNumber desc limit 10
</select>
<select id="getStationCompletedRateByDept" resultType="java.util.Map" parameterType="String">
select b.three_dept_name name,CONCAT(ROUND(sum(COALESCE(b.completed, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.completed, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.completed, 0)) completed,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.id=b.three_dept_id where b.second_dept_id=#{deptId}
GROUP BY three_dept_name order by rateNumber desc limit 10
</select>
<select id="getStationResolvedRateByDept" resultType="java.util.Map" parameterType="String">
select b.three_dept_name name,CONCAT(ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.resolved, 0)) resolved,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.id=b.three_dept_id where b.second_dept_id=#{deptId}
GROUP BY three_dept_name order by rateNumber desc limit 10
</select>
<select id="getStationSatisfiedRateByDept" resultType="java.util.Map" parameterType="String">
select b.three_dept_name name,CONCAT(ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0),'%') rate,
ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0) rateNumber,
SUM(COALESCE(b.satisfied, 0)) satisfied,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.id=b.three_dept_id where b.second_dept_id=#{deptId}
GROUP BY three_dept_name order by rateNumber desc limit 10
</select>
<select id="getTodayMailCount" resultType="Integer" parameterType="String">
select count(1) mailCount from mail where create_time>=CURRENT_DATE
<if test="deptId != null and deptId != ''">and second_dep_id=#{deptId} </if>
</select>
<select id="getAllMailCount" resultType="Integer">
select count(1) as countSum from mail_mark
</select>
<select id="getResolvedRateByDeptId" resultType="java.util.Map" >
select b.second_dept_name name,CONCAT(ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0),'%') rate,SUM(COALESCE(b.resolved, 0)) resolved,count(1) sum
from dept a inner join mail_mark b on a.id=b.second_dept_id where a.category='2'
<if test="deptId != null and deptId != ''">and b.second_dept_id=#{deptId} GROUP BY second_dept_name </if>
</select>
<select id="getAllResolvedRate" resultType="java.util.Map">
select CONCAT(ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0),'%') resolvedRate,SUM(COALESCE(b.resolved, 0)) resolved,count(1) resolvedSum
from mail_mark b left join dept a on a.id=b.second_dept_id where 1=1
<if test="deptId != null and deptId != ''"> and a.category='2' and b.second_dept_id=#{deptId} GROUP BY second_dept_name</if>
</select>
<select id="getAllCompletedRate" resultType="java.util.Map">
select CONCAT(ROUND(sum(COALESCE(b.completed, 0))*100/count(1),0),'%') completedRate,SUM(COALESCE(b.completed, 0)) completed,count(1) completedSum
from mail_mark b left join dept a on a.id=b.second_dept_id where 1=1
<if test="deptId != null and deptId != ''"> and a.category='2' and b.second_dept_id=#{deptId} GROUP BY second_dept_name</if>
</select>
<select id="getAllSatisfiedRate" resultType="java.util.Map">
select CONCAT(ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0),'%') satisfiedRate,SUM(COALESCE(b.satisfied, 0)) satisfied,count(1) satisfiedSum
from mail_mark b left join dept a on a.id=b.second_dept_id where 1=1
<if test="deptId != null and deptId != ''"> and a.category='2' and b.second_dept_id=#{deptId} GROUP BY second_dept_name</if>
</select>
<select id="mailTypeRank" resultType="java.util.Map">
select ROW_NUMBER() OVER (ORDER BY sumCount desc) AS rowNumber , mail_first_category category,count(1) sumCount ,CONCAT(ROUND(count(1)*100/(select count(1) from mail),0),'%') countRate
from mail group by mail_first_category limit 10
</select>
<select id="getMailDayTrend" resultType="java.util.Map">
select TO_CHAR(create_time, 'YYYY/MM/DD') create_time,count(1) countsum from mail
WHERE create_time between #{startDate} and #{endDate}
group by TO_CHAR(create_time, 'YYYY/MM/DD') order by create_time
</select>
<select id="getMailWeekTrend" resultType="java.util.Map">
select countSum ,CONCAT(year,'/',week) week from (
SELECT
EXTRACT(YEAR FROM create_time) AS year,
EXTRACT(WEEK FROM create_time) AS week ,
count(1) countSum
FROM mail WHERE create_time between #{startDate} and #{endDate}
GROUP BY year,week order by year,week) a
</select>
<select id="getMailMonthTrend" resultType="java.util.Map">
SELECT
to_char(create_time::DATE, 'MM') AS month ,
count(1) countSum
FROM mail where EXTRACT(YEAR FROM create_time)=#{year}
GROUP BY month order by month
</select>
<select id="mapData" resultType="java.util.Map">
select d.name, a.id,
(select count(1) mailCount from mail c where c.create_time>=CURRENT_DATE and c.second_dept_id=a.id) todaysum ,
CONCAT(ROUND(sum(COALESCE(b.resolved, 0))*100/count(1),0),'%') resolvedRate,
SUM(COALESCE(b.resolved, 0)) resolved,
ROUND(sum(COALESCE(b.completed, 0))*100/count(b.mail_id),0) value,
CONCAT(ROUND(sum(COALESCE(b.completed, 0))*100/count(b.mail_id),0),'%') completedRate,
SUM(COALESCE(b.completed, 0)) completed,
CONCAT(ROUND(sum(COALESCE(b.satisfied, 0))*100/count(1),0),'%') satisfiedRate,
SUM(COALESCE(b.satisfied, 0)) satisfied,
count(1) allsum
from mail_mark b left join dept a on a.id=b.second_dept_id
inner join county_street_dept d on b.second_dept_id=d.dept_id
where 1=1
<if test="deptId != null and deptId != ''"> and b.second_dept_id=#{deptId}</if>
GROUP BY d.name,a.id
</select>
</mapper>