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.

133 lines
5.7 KiB

4 years ago
<?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.ccsens.carbasics.persist.dao.FirstAidDao">
<select id="getUserIdById" resultType="Long">
SELECT
m.user_id
FROM
t_qcp_first_aid a,
t_pro_member m
WHERE
a.project_id = m.project_id
AND a.id = #{aidId}
AND a.rec_status = 0
AND m.rec_status = 0
</select>
<select id="queryQuality" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Quality">
select
<choose>
<when test="param.type == 0">
DATE_FORMAT(a.created_at,'%Y-%m') as date,
</when>
<otherwise>
concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) as date,
</otherwise>
</choose>
count(a.id) as total,
count(r.id) as rongshuan,
max(r.answer - a.arrive_hospital_time)/60000 as max,
min(r.answer - a.arrive_hospital_time)/60000 as min,
avg(r.answer - a.arrive_hospital_time)/60000 as avg,
count(if(r.answer - a.arrive_hospital_time &lt;= 3600000, 1, null)) as dabiao
from t_qcp_first_aid a left join t_qcp_patient p on a.patient_id = p.id
left join t_qcp_first_aid_record r on a.id = r.first_aid_id and r.question_code = 'JMRSSJ' and r.rec_status = 0
where p.hospital_id = #{hospitalId} and a.rec_status = 0 and p.rec_status = 0
<if test="param.startTime != null and param.startTime != 0">
and unix_timestamp(a.created_at)*1000 &gt;= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != 0">
and unix_timestamp(a.created_at)*1000 &lt;= #{param.endTime}
</if>
<choose>
<when test="param.type == 0">
and DATE_FORMAT(a.created_at,'%Y-%m') = FROM_UNIXTIME(r.answer/1000,'%Y-%m')
GROUP BY DATE_FORMAT(a.created_at,'%Y-%m')
</when>
<otherwise>
and concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) = concat(DATE_FORMAT(from_unixtime(r.answer/1000),'%Y-'), week(from_unixtime(r.answer/1000)))
GROUP BY DATE_FORMAT(a.created_at,'%Y-%m')
</otherwise>
</choose>
</select>
<select id="getMedian" resultType="java.math.BigDecimal">
SELECT AVG(dd.val) as median_val
FROM (
SELECT d.val, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum
FROM
(select r.answer/60000 as val from t_qcp_first_aid a, t_qcp_first_aid_record r
where a.id = r.first_aid_id and r.question_code = 'JMRSSJ'
<choose>
<when test="type == 0">and FROM_UNIXTIME(r.answer/1000,'%Y-%m') = #{date} </when>
<when test="type == 1">and concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) = #{date} </when>
<when test="type == 2">and FROM_UNIXTIME(r.answer/1000,'%Y-%m-%d') = #{date} </when>
</choose>
) d,
(SELECT @rownum:=0) r
WHERE d.val is NOT NULL
ORDER BY d.val
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );
</select>
<select id="queryThrombolyticDay" resultType="java.lang.String">
select distinct FROM_UNIXTIME(r.answer/1000,'%Y-%m-%d') as day
from t_qcp_first_aid a, t_qcp_first_aid_record r, t_qcp_patient p
where a.id = r.first_aid_id and a.patient_id = p.id and p.hospital_id = #{hospitalId}
and r.question_code = 'JMRSSJ' and a.rec_status = 0 and p.rec_status = 0 and r.rec_status = 0
</select>
<select id="getIdByProjectId" resultType="java.lang.Long">
SELECT
id
FROM
t_qcp_first_aid AS a
WHERE
rec_status = 0
AND project_id = #{projectId}
LIMIT 1
</select>
<select id="getPatientName" resultType="java.lang.String">
SELECT
p.NAME
FROM
t_qcp_first_aid a,
t_qcp_patient p
WHERE
a.patient_id = p.id
AND a.id = #{id}
AND a.rec_status = 0
AND p.rec_status = 0
</select>
<select id="selResult" resultType="java.lang.Integer">
select
if(tfa.num is NULL,0,tfa.num) as num
FROM
(SELECT
concat( #{year}, `name` ) AS `name`
FROM
t_statistics_month ) tsm
LEFT JOIN (
SELECT
tfa.da,
count( tfa.da ) AS num
FROM
(
SELECT
FROM_UNIXTIME( a.time / 1000, '%Y-%m' ) AS da
FROM
`t_qcp_first_aid` a LEFT JOIN t_qcp_patient p on a.patient_id = p.id and p.rec_status = 0
WHERE
a.rec_status = 0
AND p.hospital_id = #{hospitalId}
AND FROM_UNIXTIME( time / 1000, '%Y' ) = #{year}
) tfa
GROUP BY
tfa.da
ORDER BY
tfa.da
) tfa on tsm.`name`=tfa.`da`
</select>
</mapper>