From 809f28b2efe947cb0987356cffa42de959e2aa4d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 09 十月 2026 11:12:52 +0800
Subject: [PATCH] 111
---
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 341 insertions(+), 19 deletions(-)
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 9471442..fc3e5da 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
@@ -568,6 +571,43 @@
AND date_format(visit_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d')
</if>
</select>
+ <!--
+ 婊℃剰搴︾粺璁★細鍙煡鏈鏉′欢涓嬪疄闄呭瓨鍦ㄥ摢浜� type銆�
+ 杩囨护鏉′欢涓� selectSatisfactionSubtaskList 瀹屽叏涓�鑷达紝鍙槸锛�
+ 1) 鍙� select distinct type锛堝師鏉ユ槸鎶婁笂鐧句釜瀛楁鍏ㄦ煡鍥炴潵锛夛紱
+ 2) visit_time 鏀规垚鍙蛋绱㈠紩鐨勮寖鍥存潯浠讹紙鍘熸潵瀵瑰垪濂� date_format锛岀储寮曠敤涓嶄笂锛夈��
+ -->
+ <select id="selectSatisfactionSubtaskTypes" parameterType="com.smartor.domain.VO.PatSatisfactionReqVO"
+ resultType="java.lang.String">
+ select distinct type
+ from service_subtask
+ where del_flag = 0
+ <if test="questionType != null">and type = #{questionType}</if>
+ <if test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0">
+ AND leavehospitaldistrictcode IN
+ <foreach collection="hospitaldistrictcodes" item="hospitaldistrictcode" open="(" separator=","
+ close=")">
+ #{hospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test="deptcodes != null and deptcodes.size() > 0">
+ AND deptcode IN
+ <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")">
+ #{deptcode}
+ </foreach>
+ </if>
+ <if test="serviceTypes != null and serviceTypes.size() > 0">
+ AND service_type IN
+ <foreach collection="serviceTypes" item="serviceType" open="(" separator="," close=")">
+ #{serviceType}
+ </foreach>
+ </if>
+ <if test="startTime != null and endTime != null">
+ AND visit_time >= #{startTime}
+ AND visit_time < date_add(#{endTime}, interval 1 day)
+ </if>
+ </select>
+
<select id="getCompensateServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
resultMap="ServiceSubtaskResult">
<include refid="selectServiceSubtaskVo"/>
@@ -976,6 +1016,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 +1114,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 +1217,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 +1316,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 +1419,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 ">
@@ -1485,6 +1530,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>
@@ -2575,6 +2621,8 @@
SUM(CASE WHEN sendstate != 4 THEN 1 ELSE 0 END) AS xsf,
SUM(CASE WHEN (sendstate = 1 OR sendstate = 2 OR sendstate = 3 OR sendstate = 5 OR sendstate = 7 ) THEN 1 ELSE 0
END) AS dsf,
+ SUM(CASE WHEN sendstate != 2 THEN 1 ELSE 0 END) AS yfs,
+ SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS wfs,
SUM(CASE WHEN sendstate = 6 THEN 1 ELSE 0 END) AS ywc,
SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS yc,
SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS jg,
@@ -2885,6 +2933,60 @@
</select>
<!--
+ 婊℃剰搴︽煴鐘跺浘锛氫竴娆℃�х粺璁℃湰娆¤姹傚叏閮ㄦā鏉跨殑鍙戦�侀噺銆�
+ 涓� querySendCount 鐨勮繃婊ゆ潯浠跺畬鍏ㄤ竴鑷达紝鍖哄埆鏄細
+ 1) 鎸� libtemplateid 鍒嗙粍锛屼竴娆¤繑鍥炴墍鏈夋ā鏉匡紙鏇夸唬閫愪釜妯℃澘鏌ヨ锛夛紱
+ 2) visit_time 鏀规垚鍙蛋绱㈠紩鐨勮寖鍥存潯浠讹紙鍘熸潵瀵瑰垪濂� date_format锛岀储寮曠敤涓嶄笂锛夈��
+ -->
+ <select id="selectSatisfactionSendCount" parameterType="com.smartor.domain.entity.SatisfactionStatQuery"
+ resultType="java.util.Map">
+ select libtemplateid as libtemplateid, count(distinct id) as cnt
+ from service_subtask
+ where del_flag = 0
+ <if test="orgid != null and orgid != ''">
+ and orgid = #{orgid}
+ </if>
+ <if test="campusid != null and campusid != ''">
+ and campusid = #{campusid}
+ </if>
+ <if test="type != null and type != ''">and type = #{type}</if>
+ <if test="startTime != null">
+ and visit_time >= #{startTime}
+ </if>
+ <if test="endTime != null">
+ and visit_time < date_add(#{endTime}, interval 1 day)
+ </if>
+ <if test="libTemplateIds != null and libTemplateIds.size() > 0">
+ and libtemplateid IN
+ <foreach collection="libTemplateIds" item="libTemplateId" open="(" separator="," close=")">
+ #{libTemplateId}
+ </foreach>
+ </if>
+ <if test="(hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0) or (deptcodes != null and deptcodes.size() > 0)">
+ AND (
+ <if test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0">
+ leavehospitaldistrictcode IN
+ <foreach collection="hospitaldistrictcodes" item="hospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{hospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0 and deptcodes != null and deptcodes.size() > 0">
+ OR
+ </if>
+ <if test="deptcodes != null and deptcodes.size() > 0">
+ deptcode IN
+ <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")">
+ #{deptcode}
+ </foreach>
+ </if>
+ )
+ </if>
+ group by libtemplateid
+ </select>
+
+ <!--
鎸夌梾鍖烘垨绉戝鍒嗙粍缁熻 continue_flag 鏁伴噺
浼犱簡 leavehospitaldistrictcodes 鈫� 鎸夌梾鍖虹淮搴�
浼犱簡 deptcodes 鈫� 鎸夌瀹ょ淮搴�
@@ -3027,7 +3129,7 @@
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 (6, 14)
+ WHERE t.service_type IN (14)
AND t.del_flag = 0
AND d.del_flag = 0
AND d.create_time >= #{startFinishTime}
@@ -3249,6 +3351,13 @@
#{taskId}
</foreach>
</if>
+ <!-- 浼犱簡 subtaskIds 鍙粺璁¤繖鎵瑰瓙浠诲姟锛堟湰娆″鍑虹殑鎮h�咃級 -->
+ <if test="subtaskIds != null and subtaskIds.size() > 0">
+ AND s.id IN
+ <foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
+ #{subtaskId}
+ </foreach>
+ </if>
<if test="valueType != null">AND d.value_type = #{valueType}</if>
<if test="scoreStart != null">AND d.score >= #{scoreStart}</if>
<if test="scoreEnd != null">AND d.score <= #{scoreEnd}</if>
@@ -3257,6 +3366,19 @@
</if>
and s.sendstate=6
and d.del_flag=0
+ <!-- 鍒嗘瘝蹇呴』鍜屾槑缁嗙敤鍚屼竴濂楁椂闂存潯浠讹紝鍚﹀垯閫変簡鏃堕棿鑼冨洿鍚庢瘮渚嬩細鎸夊叏閲忓巻鍙茶绋�閲� -->
+ <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
t.taskid,
d.questiontext
@@ -3266,6 +3388,12 @@
AND t.taskid IN
<foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
#{taskId}
+ </foreach>
+ </if>
+ <if test="subtaskIds != null and subtaskIds.size() > 0">
+ AND s.id IN
+ <foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
+ #{subtaskId}
</foreach>
</if>
<if test="valueType != null">AND d.value_type = #{valueType}</if>
@@ -3300,18 +3428,77 @@
t.taskid
</select>
+ <!--
+ 瀵煎嚭銆岄棶棰樿鎯呭崰姣斻�嶄笓鐢ㄧ粺璁★紙鍙粺璁℃湰娆″鍑虹殑杩欐壒鎮h�咃級
+ 鏁伴噺 = 閫夋嫨璇ラ�夐」鐨勬偅鑰呮暟锛圕OUNT(DISTINCT s.id)锛屽苟鐢� MAX(id) 淇濊瘉鍚屼竴鎮h�呭悓涓�棰樺彧绠楁渶鏂颁竴鏉★級
+ 鍒嗘暟 = 璇ラ�夐」鏄庣粏鐨� score 涔嬪拰
+ 姣斾緥 = 鏁伴噺 / 璇ラ浣滅瓟鎮h�呮暟锛屽湪 Java 渚х粺涓�璁$畻锛屽洜姝ゃ�屽崟棰樺悇閫夐」鏁伴噺涔嬪拰 = 璇ラ浣滅瓟鎮h�呮暟銆�
+ -->
+ <select id="statMydQuestionOptionForExport" resultType="com.smartor.domain.DTO.ServiceSubtaskOptionStatDTO">
+ SELECT
+ t.taskid AS taskid,
+ t.task_name AS taskName,
+ d.questiontext AS questiontext,
+ d.asrtext AS optionresult,
+ d.targetvalue AS targetvalue,
+ d.value_type AS valueType,
+ COUNT(DISTINCT s.id) AS patientCount,
+ SUM(COALESCE(CAST(d.score AS DECIMAL(18,2)), 0)) AS scoreSum
+ FROM
+ 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
+ WHERE 1=1
+ AND s.del_flag = '0'
+ AND d.del_flag = 0
+ <if test="subtaskIds != null and subtaskIds.size() > 0">
+ AND s.id IN
+ <foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
+ #{subtaskId}
+ </foreach>
+ </if>
+ <!-- 涓嶄紶瀛愪换鍔℃椂鐩存帴鏌ヤ笉鍒版暟鎹紝閬垮厤璇粺璁″叏閲� -->
+ <if test="subtaskIds == null or subtaskIds.size() == 0">
+ AND 1 = 0
+ </if>
+ <if test="questiontext != null and questiontext != ''">
+ AND d.questiontext LIKE CONCAT('%', #{questiontext}, '%')
+ </if>
+ <!-- 鍚屼竴鎮h�呭悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閲嶇瓟涓嶉噸澶嶈鍏ユ暟閲� -->
+ 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'
+ )
+ GROUP BY
+ t.taskid,
+ t.task_name,
+ d.questiontext,
+ d.asrtext,
+ d.targetvalue,
+ d.value_type
+ <!-- 鎸変换鍔″悕绉板垎缁勫睍绀猴細鍏堜换鍔″悕绉般�佸啀浠诲姟缂栧彿锛屽悓涓�浠诲姟鐨勯鐩�/閫夐」杩炵画鎺掑垪 -->
+ ORDER BY
+ t.task_name,
+ t.taskid,
+ d.questiontext
+ </select>
+
<!-- 鏂版柟娉曪細鏍规嵁瀛愪换鍔� ID 缁熻闂閫夐」鐧惧垎姣� (鐢ㄤ簬婊℃剰搴︾粺璁� serviceType=6) -->
<select id="statQuestionOptionBySubtaskIds" resultType="com.smartor.domain.ServiceSubtaskDetailRatioExport">
SELECT
d.questiontext AS questiontext,
- t.taskid AS taskid,
- t.task_name AS taskName,
+ <!-- 鏄庣粏宸叉寜銆岄鐩� + 閫夐」銆嶆眹鎬伙紝浠诲姟/绉戝/鐥呭尯鍙槸闄勫甫淇℃伅锛屽繀椤荤敤鑱氬悎鍑芥暟鍙栧�硷紙MySQL ONLY_FULL_GROUP_BY锛� -->
+ MAX(t.taskid) AS taskid,
+ MAX(t.task_name) AS taskName,
d.asrtext AS optionresult,
d.score AS score,
- s.deptcode AS deptcode,
- s.deptname AS deptname,
- s.leavehospitaldistrictcode AS leavehospitaldistrictcode,
- s.leavehospitaldistrictname AS leavehospitaldistrictname,
+ MAX(s.deptcode) AS deptcode,
+ MAX(s.deptname) AS deptname,
+ MAX(s.leavehospitaldistrictcode) AS leavehospitaldistrictcode,
+ MAX(s.leavehospitaldistrictname) AS leavehospitaldistrictname,
d.targetvalue AS targetvalue,
d.value_type AS valueType,
COUNT(*) AS count,
@@ -3320,14 +3507,36 @@
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 (
+ <!-- 鍒嗘瘝 = 璇ラ鍚勯�夐」椤规暟涔嬪拰锛堟湭浣滅瓟鐨勭┖ asrtext 涓嶈繘鍒嗘瘝锛夛紝杩欐牱涓�閬撻鍚勯�夐」姣斾緥鍚堣鎵嶆槸 100% -->
+ SELECT
+ x.questiontext AS questiontext,
+ SUM(x.option_count) AS total_count
+ FROM (
SELECT
d.questiontext,
- COUNT(*) AS total_count
+ d.asrtext,
+ COUNT(*) AS option_count
FROM
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
@@ -3336,16 +3545,41 @@
</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
- GROUP BY d.questiontext
+ <!-- 鍒嗘瘝涓庢槑缁嗙敤鍚屼竴濂楁椂闂存潯浠讹紝鍚﹀垯閫変簡鏃ユ湡鍖洪棿鍚庡悇閫夐」姣斾緥鍚堣涓嶅埌 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>
+ <!-- 鏈綔绛旓紙asrtext 涓虹┖锛夌殑鏄庣粏涓嶈鍏ュ垎姣� -->
+ AND d.asrtext IS NOT NULL AND TRIM(d.asrtext) <> ''
+ GROUP BY d.questiontext, d.asrtext
+ ) x
+ GROUP BY x.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=")">
@@ -3354,6 +3588,8 @@
</if>
AND s.sendstate = 6
AND d.del_flag=0
+ <!-- 鏈綔绛旓紙asrtext 涓虹┖锛変笉绠椾换浣曢�夐」锛屾槑缁嗛噷鐩存帴鎺掗櫎锛岄伩鍏嶅嚭鐜扮┖閫夐」琛� -->
+ AND d.asrtext IS NOT NULL AND TRIM(d.asrtext) <> ''
<if test="valueType != null">AND d.value_type >= #{valueType}</if>
<if test="scoreStart != null">AND d.score >= #{scoreStart}</if>
<if test="scoreEnd != null">AND d.score <= #{scoreEnd}</if>
@@ -3372,21 +3608,17 @@
<if test="endFinishTime != null">
AND date_format(s.finishtime,'%y%m%d') <= date_format(#{endFinishTime},'%y%m%d')
</if>
+ <!-- 鍙寜銆岄鐩� + 閫夐」銆嶆眹鎬伙細鍘熸潵 GROUP BY 甯︿笂 taskid/绉戝/鐥呭尯锛屽悓涓�涓�夐」琚媶鎴愬琛屻�佹瘡琛屾暟閲忛兘鏄� 1锛�
+ 鍓嶇/瀵煎嚭鎷垮埌鐨勩�屾暟閲忋�嶅氨姘歌繙鍋氫笉浜嗙疮鍔� -->
GROUP BY
- t.taskid,
d.questiontext,
+ d.asrtext,
d.score,
d.targetvalue,
- d.asrtext,
- t.task_name,
- s.deptcode,
- s.deptname,
- s.leavehospitaldistrictcode,
- s.leavehospitaldistrictname,
d.value_type
ORDER BY
d.questiontext,
- t.taskid
+ MIN(t.taskid)
</select>
<select id="statQuestionOptionByKsOrBq" resultType="com.smartor.domain.DTO.QuestionCountKsOrBqDTO"
@@ -3457,6 +3689,96 @@
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