From ebb93427d2b79f53be414dcc0857d7135f91fda7 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 22 九月 2026 14:23:28 +0800
Subject: [PATCH] 【丽水】是否手动电话标记
---
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 365 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 325 insertions(+), 40 deletions(-)
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 0c32669..1603d17 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -98,6 +98,7 @@
<result property="scheduleDetailId" column="schedule_detail_id"/>
<result property="scheduleSeq" column="schedule_seq"/>
<result property="loopCount" column="loop_count"/>
+ <result property="isManuallyCalled" column="is_manually_called"/>
<result property="campusid" column="campusid"/>
</resultMap>
@@ -245,7 +246,8 @@
schedule_detail_id,
schedule_seq,
loop_count,
- task_situation
+ task_situation,
+ is_manually_called
from service_subtask
</sql>
@@ -513,6 +515,7 @@
<if test="createBy != null">and create_by = #{createBy}</if>
<if test="taskGuid != null">and task_guid = #{taskGuid}</if>
<if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+ <if test="isManuallyCalled != null">and is_manually_called = #{isManuallyCalled}</if>
<if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if>
<if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0">
AND visit_dept_code IN
@@ -976,6 +979,7 @@
<if test="scheduleDetailId != null ">schedule_detail_id,</if>
<if test="scheduleSeq != null ">schedule_seq,</if>
<if test="loopCount != null ">loop_count,</if>
+ <if test="isManuallyCalled != null ">is_manually_called,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sendname != null">#{sendname},</if>
@@ -1073,6 +1077,7 @@
<if test="scheduleDetailId != null ">#{scheduleDetailId},</if>
<if test="scheduleSeq != null ">#{scheduleSeq},</if>
<if test="loopCount != null ">#{loopCount},</if>
+ <if test="isManuallyCalled != null ">#{isManuallyCalled},</if>
</trim>
</insert>
@@ -1175,6 +1180,7 @@
<if test="scheduleDetailId != null ">schedule_detail_id = #{scheduleDetailId},</if>
<if test="scheduleSeq != null ">schedule_seq = #{scheduleSeq},</if>
<if test="loopCount != null ">loop_count = #{loopCount},</if>
+ <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
</trim>
where id = #{id}
</update>
@@ -1273,6 +1279,7 @@
<if test="continueCount != null ">continue_count = #{continueCount},</if>
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
+ <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
</trim>
where 1=1
<if test="patid != null ">and patid = #{patid}</if>
@@ -1375,6 +1382,7 @@
<if test="continueCount != null ">continue_count = #{continueCount},</if>
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
+ <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
</trim>
<where>
<if test="patid != null ">
@@ -1385,6 +1393,9 @@
</if>
<if test="id != null ">
and id = #{id}
+ </if>
+ <if test="inhospid != null ">
+ and inhospid = #{inhospid}
</if>
</where>
</update>
@@ -1482,6 +1493,7 @@
<if test="continueCount != null ">continue_count = #{continueCount},</if>
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
+ <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
</trim>
where task_guid = #{taskGuid} and task_name = #{taskName}
</update>
@@ -2585,6 +2597,12 @@
<if test="phone != null and phone != ''">
AND phone = #{phone}
</if>
+ <if test="finishtimeStart != null">
+ AND date_format(finishtime,'%y%m%d') >= date_format(#{finishtimeStart},'%y%m%d')
+ </if>
+ <if test="finishtimeEnd != null">
+ AND date_format(finishtime,'%y%m%d') <= date_format(#{finishtimeEnd},'%y%m%d')
+ </if>
<if test="deptOrDistrict==1">
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
AND leavehospitaldistrictcode IN
@@ -3007,6 +3025,117 @@
and sendstate in (1, 2, 3)
</select>
+ <select id="mydTrend" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period,
+ ROUND(avg(d.score), 2) AS totalScore
+ FROM service_subtask_detail d
+ JOIN service_task t ON d.taskid = t.taskid
+ WHERE t.service_type IN (14)
+ AND t.del_flag = 0
+ AND d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < DATE_ADD(#{endFinishTime}, INTERVAL 1 DAY)
+ GROUP BY period
+ ORDER BY period;
+ </select>
+
+ <select id="sltdMydTotalByDimension" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT
+ p.period,
+ dim.dimension,
+ IFNULL(ROUND(SUM(d.score), 2), 0) AS totalScore
+ FROM (
+ <!-- 鐢熸垚鏌ヨ鑼冨洿鍐呭疄闄呭嚭鐜拌繃鐨勬椂闂存 -->
+ SELECT DISTINCT
+ CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period
+ FROM service_subtask_detail d
+ WHERE d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ ) p
+ CROSS JOIN (
+ <!-- 鎵�鏈夐渶瑕佸睍绀虹殑 dimension -->
+ SELECT DISTINCT dimension
+ FROM service_subtask_detail
+ WHERE del_flag = 0
+ AND dimension IS NOT NULL
+ ) dim
+ LEFT JOIN service_task t
+ ON t.service_type IN (6, 14)
+ AND t.del_flag = 0
+ LEFT JOIN service_subtask_detail d
+ ON d.taskid = t.taskid
+ AND d.del_flag = 0
+ AND d.dimension = dim.dimension
+ AND CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END = p.period
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ GROUP BY p.period, dim.dimension
+ ORDER BY p.period, dim.dimension
+ </select>
+
+ <select id="sltdMydTotalByYQ" resultType="com.smartor.domain.DTO.MydTrendReqDTO">
+ SELECT p.period,
+ c.campusid,
+ IFNULL(ROUND(AVG(d.score), 2), 0) AS totalScore
+ FROM (
+ -- 鐢熸垚鏌ヨ鑼冨洿鍐呭疄闄呭嚭鐜拌繃鐨勬椂闂存
+ SELECT DISTINCT CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END AS period
+ FROM service_subtask_detail d
+ WHERE d.del_flag = 0
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}) p
+ CROSS JOIN (
+ -- 鎵�鏈夐渶瑕佸睍绀虹殑闄㈠尯
+ SELECT DISTINCT campusid
+ FROM service_task
+ WHERE service_type IN (6, 14)
+ AND del_flag = 0
+ AND campusid IS NOT NULL) c
+ LEFT JOIN service_task t
+ ON t.campusid = c.campusid
+ AND t.service_type IN (6, 14)
+ AND t.del_flag = 0
+ LEFT JOIN service_subtask_detail d
+ ON d.taskid = t.taskid
+ AND d.del_flag = 0
+ AND CASE #{type}
+ WHEN 'year' THEN DATE_FORMAT(d.create_time, '%Y')
+ WHEN 'quarter' THEN CONCAT(YEAR(d.create_time), '-Q', QUARTER(d.create_time))
+ WHEN 'month' THEN DATE_FORMAT(d.create_time, '%Y-%m')
+ WHEN 'week' THEN FLOOR(DATEDIFF(d.create_time, #{startFinishTime}) / 7) + 1
+ ELSE DATE_FORMAT(d.create_time, '%Y-%m-%d')
+ END = p.period
+ AND d.create_time >= #{startFinishTime}
+ AND d.create_time < #{endFinishTime}
+ GROUP BY p.period, c.campusid
+ ORDER BY p.period, c.campusid;
+ </select>
+
<!-- 浠诲姟缁勶紙appltype=5锛夋粴鍔ㄨ皟搴︾敤锛氭媺鏈疆鍏ㄩ噺 subtask锛屼綔涓轰笅涓�杞殑鍏嬮殕妯℃澘 -->
<select id="selectByScheduleIdAndLoop" resultMap="ServiceSubtaskResult">
<include refid="selectServiceSubtaskVo"/>
@@ -3162,6 +3291,12 @@
<if test="endOutHospTime != null">
AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
</if>
+ <if test="startFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') >= date_format(#{startFinishTime},'%y%m%d')
+ </if>
+ <if test="endFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
+ </if>
GROUP BY
t.taskid,
d.questiontext,
@@ -3194,6 +3329,14 @@
service_task t
INNER JOIN service_subtask s ON s.taskid = t.taskid
INNER JOIN service_subtask_detail d ON d.sub_id = s.id
+ <!-- 鍘婚噸锛氬悓涓�瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閬垮厤閲嶇瓟/閲嶅鍥炶皟鎶婂悓涓�閬撻閲嶅璁″叆椤规暟锛堜笌 mzMydScoreRank 鍙e緞涓�鑷达級 -->
+ AND d.id = (
+ SELECT MAX(d2.id)
+ FROM service_subtask_detail d2
+ WHERE d2.sub_id = d.sub_id
+ AND d2.questiontext <=> d.questiontext
+ AND d2.del_flag = '0'
+ )
INNER JOIN (
SELECT
d.questiontext,
@@ -3202,6 +3345,14 @@
service_task t
INNER JOIN service_subtask s ON s.taskid = t.taskid
INNER JOIN service_subtask_detail d ON d.sub_id = s.id
+ <!-- 鍘婚噸锛氬垎姣嶏紙璇ラ鏈夋晥绛斿嵎鎬绘暟锛変笌鏄庣粏鍙e緞淇濇寔涓�鑷达紝淇濊瘉鍚勯�夐」姣斾緥鍚堣 100% -->
+ AND d.id = (
+ SELECT MAX(d4.id)
+ FROM service_subtask_detail d4
+ WHERE d4.sub_id = d.sub_id
+ AND d4.questiontext <=> d.questiontext
+ AND d4.del_flag = '0'
+ )
WHERE 1=1
<if test="subtaskIds != null and subtaskIds.size() > 0">
AND s.id IN
@@ -3210,16 +3361,37 @@
</foreach>
</if>
<if test="valueType != null">AND d.value_type >= #{valueType}</if>
- <if test="scoreStart != null">AND d.score = #{scoreStart}</if>
+ <if test="scoreStart != null">AND d.score >= #{scoreStart}</if>
<if test="scoreEnd != null">AND d.score <= #{scoreEnd}</if>
<if test="questiontext != null and questiontext != ''">and d.questiontext like concat('%', #{questiontext},
'%')
</if>
AND s.sendstate = 6
AND d.del_flag=0
+ <!-- 鍒嗘瘝涓庢槑缁嗙敤鍚屼竴濂楁椂闂存潯浠讹紝鍚﹀垯閫変簡鏃ユ湡鍖洪棿鍚庡悇閫夐」姣斾緥鍚堣涓嶅埌 100% -->
+ <if test="startOutHospTime != null">
+ AND date_format(s.endtime,'%y%m%d') >= date_format(#{startOutHospTime},'%y%m%d')
+ </if>
+ <if test="endOutHospTime != null">
+ AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
+ </if>
+ <if test="startFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') >= date_format(#{startFinishTime},'%y%m%d')
+ </if>
+ <if test="endFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
+ </if>
GROUP BY d.questiontext
) t2 ON t2.questiontext = d.questiontext
WHERE 1=1
+ <!-- 鍘婚噸锛氭槑缁嗚鍚屼竴瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閲嶇瓟涓嶉噸澶嶈鍏ラ」鏁� -->
+ AND d.id = (
+ SELECT MAX(d3.id)
+ FROM service_subtask_detail d3
+ WHERE d3.sub_id = d.sub_id
+ AND d3.questiontext <=> d.questiontext
+ AND d3.del_flag = '0'
+ )
<if test="subtaskIds != null and subtaskIds.size() > 0">
AND s.id IN
<foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
@@ -3240,12 +3412,24 @@
<if test="endOutHospTime != null">
AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
</if>
+ <if test="startFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') >= date_format(#{startFinishTime},'%y%m%d')
+ </if>
+ <if test="endFinishTime != null">
+ AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
+ </if>
GROUP BY
t.taskid,
d.questiontext,
d.score,
d.targetvalue,
- d.asrtext
+ d.asrtext,
+ t.task_name,
+ s.deptcode,
+ s.deptname,
+ s.leavehospitaldistrictcode,
+ s.leavehospitaldistrictname,
+ d.value_type
ORDER BY
d.questiontext,
t.taskid
@@ -3253,50 +3437,61 @@
<select id="statQuestionOptionByKsOrBq" resultType="com.smartor.domain.DTO.QuestionCountKsOrBqDTO"
parameterType="com.smartor.domain.VO.QuestionCountKsOrBqVO">
- SELECT questiontext,
- d.taskid,
- s.deptname,
- d.create_time as createTime,
- s.leavehospitaldistrictname,
- d.targetvalue,
- d.asrtext,
- COUNT(d.asrtext) AS answercount,
- d.score AS singleScore
- FROM service_subtask_detail d,
- service_task s
- WHERE d.taskid = s.taskid
- AND deptname IS NOT NULL
- AND leavehospitaldistrictname IS NOT NULL
+ SELECT
+ s.deptname AS deptname,
+ s.leavehospitaldistrictname AS leavehospitaldistrictname,
+ d.questiontext AS questionText,
+ d.targetvalue AS targetvalue, -- 鎵�鏈夐�夐」鎷兼帴
+ d.asrtext AS asrtext, -- 鐢ㄦ埛瀹為檯閫変腑鐨勯�夐」
+ d.score AS singleScore -- 鍗曟潯璁板綍鐨勫垎鏁�
+ FROM service_subtask_detail d
+ JOIN service_subtask s ON d.sub_id = s.id
+ WHERE s.del_flag = 0
+ AND d.del_flag = 0
+ AND s.service_type IN ('6', '14')
+ <if test="taskTemplateid != null">
+ AND s.templateid = #{taskTemplateid}
+ </if>
<if test="endFinishTime != null">
AND d.create_time < #{endFinishTime}
</if>
<if test="startFinishTime != null">
- AND d.create_time >= #{startFinishTime}
+ AND d.create_time >= #{startFinishTime}
</if>
- <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND leavehospitaldistrictcode IN
- <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
- separator=","
- close=")">
- #{leavehospitaldistrictcode}
- </foreach>
+ <if test="deptOrDistrict ==1">
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ AND leavehospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{leavehospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+ AND deptcode IN
+ <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+ close=")">
+ #{leaveldeptcode}
+ </foreach>
+ </if>
</if>
- <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
- AND deptcode IN
- <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
- close=")">
- #{leaveldeptcode}
- </foreach>
+ <if test="deptOrDistrict ==2">
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ AND leavehospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{leavehospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+ OR deptcode IN
+ <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+ close=")">
+ #{leaveldeptcode}
+ </foreach>
+ </if>
</if>
- GROUP BY d.questiontext,
- d.taskid,
- d.score,
- s.deptname,
- d.targetvalue,
- d.create_time,
- s.leavehospitaldistrictname,
- d.asrtext
- ORDER BY d.taskid
</select>
<select id="selectServiceSubtaskListDeadLine" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
@@ -3308,5 +3503,95 @@
and endtime
</select>
+ <!-- 闂ㄨ瘖婊℃剰搴︾患鍚堝緱鍒嗘帓鍚嶏紙鎸夌瀹ゆ垨鐥呭尯锛� -->
+ <!-- 缁煎悎婊℃剰搴� = 危(璇勫垎鏄庣粏鏉冮噸) / 璇勫垎鏄庣粏鏉℃暟 脳 100%锛屾潈閲嶅彧鍙� 1銆�0.8銆�0.6銆�0.4銆�0.2 浜旀。 -->
+ <select id="selectMzMydScoreRank" parameterType="com.smartor.domain.VO.MzMydScoreRankVO"
+ resultType="com.smartor.domain.DTO.MzMydScoreRankDTO">
+ SELECT
+ t.code AS code,
+ t.name AS name,
+ ROUND(AVG(t.w) * 100, 2) AS score,
+ COUNT(*) AS itemCount
+ FROM (
+ SELECT
+ <choose>
+ <when test='dimensionType == "2"'>
+ s.leavehospitaldistrictcode AS code,
+ s.leavehospitaldistrictname AS name,
+ </when>
+ <otherwise>
+ s.deptcode AS code,
+ s.deptname AS name,
+ </otherwise>
+ </choose>
+ CAST(d.score AS DECIMAL(10,4)) AS w
+ FROM service_subtask s
+ INNER JOIN service_subtask_detail d ON d.sub_id = s.id
+ WHERE s.del_flag = '0'
+ AND d.del_flag = '0'
+ AND s.sendstate = 6
+ <if test="serviceTypes != null and serviceTypes.size() > 0">
+ AND service_type IN
+ <foreach collection="serviceTypes" item="serviceType" open="(" separator=","
+ close=")">
+ #{serviceType}
+ </foreach>
+ </if>
+<!-- <!– 鍙彇鍏紡閲岀殑浜旀。鏉冮噸锛岀┖鍊�/0/鏈瓟绛夋棦涓嶈繘鍒嗗瓙涔熶笉杩涘垎姣� –>-->
+<!-- AND CAST(d.score AS DECIMAL(10,4)) IN (1, 0.8, 0.6, 0.4, 0.2)-->
+ <!-- 鍚屼竴瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閬垮厤閲嶇瓟琚噸澶嶈鍏ラ」鏁� -->
+ AND d.id = (
+ SELECT MAX(d2.id)
+ FROM service_subtask_detail d2
+ WHERE d2.sub_id = d.sub_id
+ AND d2.questiontext <=> d.questiontext
+ AND d2.del_flag = '0'
+ )
+ <if test="orgid != null and orgid != ''">
+ AND s.orgid = #{orgid}
+ </if>
+ <if test="campusid != null and campusid != ''">
+ AND s.campusid = #{campusid}
+ </if>
+ <if test="startFinishTime != null">
+ AND s.finishtime >= #{startFinishTime}
+ </if>
+ <if test="endFinishTime != null">
+ AND s.finishtime < DATE_ADD(#{endFinishTime}, INTERVAL 1 DAY)
+ </if>
+ <if test="questionText != null and questionText != ''">and d.questiontext like concat('%', #{questionText},
+ '%')
+ </if>
+ <choose>
+ <when test='dimensionType == "2"'>
+ AND s.leavehospitaldistrictcode IS NOT NULL AND s.leavehospitaldistrictcode <> ''
+ AND s.leavehospitaldistrictname IS NOT NULL AND s.leavehospitaldistrictname <> ''
+ <if test="districtCodes != null and districtCodes.size() > 0">
+ AND s.leavehospitaldistrictcode IN
+ <foreach collection="districtCodes" item="districtCode" open="(" separator="," close=")">
+ #{districtCode}
+ </foreach>
+ </if>
+ </when>
+ <otherwise>
+ AND s.deptcode IS NOT NULL AND s.deptcode <> ''
+ AND s.deptname IS NOT NULL AND s.deptname <> ''
+ <if test="deptCodes != null and deptCodes.size() > 0">
+ AND s.deptcode IN
+ <foreach collection="deptCodes" item="deptCode" open="(" separator="," close=")">
+ #{deptCode}
+ </foreach>
+ </if>
+ </otherwise>
+ </choose>
+ ) t
+ GROUP BY t.code, t.name
+ ORDER BY AVG(t.w) DESC, COUNT(*) DESC
+ <if test="limit != null and limit > 0">
+ LIMIT #{limit}
+ </if>
+ </select>
+
+
</mapper>
--
Gitblit v1.9.3