From 5e09cd9bc9f370058460ca56222a0c82096a8c7d Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 17 九月 2026 16:32:57 +0800
Subject: [PATCH] 【市一】随访增加院区限制

---
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml |  550 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 367 insertions(+), 183 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 47bde97..b8b2a99 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -213,7 +213,6 @@
                create_time,
                isupload,
                upload_time,
-               orgid,
                pid,
                guid,
                text_param,
@@ -236,8 +235,6 @@
                leaveicd10code,
                orgid,
                visit_type,
-               management_doctor,
-               management_doctor_code,
                continue_flag,
                continue_time_now,
                continue_content,
@@ -257,9 +254,8 @@
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
         and del_flag = 0
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
         <if test="taskid != null ">and taskid = #{taskid}</if>
         <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
         <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -281,16 +277,11 @@
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
         and del_flag = 0
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="subId != null">
-            AND id = #{subId}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
+        <if test="subId != null">and id = #{subId}</if>
         <if test="taskid != null ">and taskid = #{taskid}</if>
-        <if test="visitTime != null">
-            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
-        </if>
+        <if test="visitTime != null">and date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')</if>
         <if test="sendstate != null ">and sendstate = #{sendstate}</if>
         <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
         <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -364,6 +355,12 @@
                 #{operationItemIdItem}
             </foreach>
         </if>
+        <if test="inhospids != null and inhospids.size() > 0">
+            AND inhospid IN
+            <foreach collection="inhospids" item="inhospidItem" open="(" separator="," close=")">
+                #{inhospidItem}
+            </foreach>
+        </if>
         <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
         <if test="templatename != null  and templatename != ''">and templatename like concat('%', #{templatename},
             '%')
@@ -379,6 +376,12 @@
         </if>
         <if test="endSendDateTime != null">
             AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endSendDateTime},'%y%m%d')
+        </if>
+        <if test="finishtimeStart != null">
+            AND date_format(finishtime,'%y%m%d') &gt;= date_format(#{finishtimeStart},'%y%m%d')
+        </if>
+        <if test="finishtimeEnd != null">
+            AND date_format(finishtime,'%y%m%d') &lt;= date_format(#{finishtimeEnd},'%y%m%d')
         </if>
         <if test="longSendTime != null">
             AND date_format(long_send_time,'%y%m%d') &lt;= date_format(#{longSendTime},'%y%m%d')
@@ -402,7 +405,7 @@
         </if>
         <if test="deptOrDistrict==2">
             AND (1=1
-            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+            <if test="leavehospitaldistrictcodes != null">
                 AND leavehospitaldistrictcode IN
                 <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                          separator=","
@@ -410,7 +413,7 @@
                     #{leavehospitaldistrictcode}
                 </foreach>
             </if>
-            <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+            <if test=" leaveldeptcodes != null">
                 OR deptcode IN
                 <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                          close=")">
@@ -570,15 +573,10 @@
         <include refid="selectServiceSubtaskVo"/>
         where del_flag = 0
         and sendstate != 5
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="visitTime != null">
-            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
-        </if>
-        <if test="subId != null">
-            AND id = #{subId}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
+        <if test="visitTime != null">and date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d') </if>
+        <if test="subId != null">and id = #{subId} </if>
         <if test="sendstate != null ">and sendstate = #{sendstate}</if>
         <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
         <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -588,9 +586,8 @@
         <include refid="selectServiceSubtaskVo"/>
         where del_flag = 0
         and sendstate = 5
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
         <if test="visitTime != null">
             AND date_format(visit_time,'%y%m%d') &lt;= date_format(DATE_ADD(#{visitTime}, INTERVAL 1 DAY),'%y%m%d')
         </if>
@@ -608,9 +605,8 @@
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where del_flag = 0
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
         <if test="createStartTime != null  and createEndTime != null">and create_time BETWEEN #{createStartTime} AND
             #{createEndTime}
         </if>
@@ -705,9 +701,8 @@
             DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%')
         </if>
         <if test="sendstate != null ">and b.sendstate = #{sendstate}</if>
-        <if test="orgid != null and orgid != ''">
-            and b.orgid = #{orgid}
-        </if>
+        <if test="orgid != null and orgid != ''">and b.orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if>
     </select>
 
     <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double">
@@ -746,7 +741,8 @@
         <if test="groupKey != null and groupKey != ''">
             ss.${groupKey} as groupKey,
         </if>
-        SUM(CASE WHEN ss.finishtime IS NOT NULL AND DATE(ss.visit_time) &lt;= DATE(ss.finishtime) THEN 1 ELSE 0 END) / COUNT(*) AS finishRate,
+        SUM(CASE WHEN ss.finishtime IS NOT NULL AND DATE(ss.visit_time) &lt;= DATE(ss.finishtime) THEN 1 ELSE 0 END) /
+        COUNT(*) AS finishRate,
         <if test="rateDay != null">
             SUM(CASE WHEN ss.finishtime IS NOT NULL
             AND DATEDIFF(ss.finishtime, ss.endtime) &lt;= #{rateDay} + COALESCE(cp.compensate_days, 0)
@@ -777,6 +773,7 @@
             AND ss.visit_time &lt; DATE_ADD(#{endtime}, INTERVAL 1 DAY)
         </if>
         <if test="orgid != null and orgid != ''">AND ss.orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and ss.campusid = #{campusid}</if>
         <if test="deptcode != null  and deptcode != ''">and ss.deptcode = #{deptcode}</if>
         <if test="deptname != null  and deptname != ''">and ss.deptname = #{deptname}</if>
         <if test="isabnormal != null">and ss.isabnormal = #{isabnormal}</if>
@@ -1275,9 +1272,8 @@
         where 1=1
         <if test="patid != null ">and patid = #{patid}</if>
         <if test="taskid != null ">and taskid = #{taskid}</if>
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
+        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
     </update>
 
     <update id="updateServiceSubtaskByCondition" parameterType="com.smartor.domain.ServiceSubtask">
@@ -1548,6 +1544,9 @@
         <if test="orgid != null and orgid != ''">
             and orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -1636,12 +1635,9 @@
         and a.del_flag = '0'
         and b.del_flag = '0'
         and a.appltype = '3'
-        <if test="orgid != null and orgid != ''">
-            and a.orgid = #{orgid}
-        </if>
-        <if test="taskId != null">
-            and a.task_id = #{taskId}
-        </if>
+        <if test="orgid != null and orgid != ''">and a.orgid = #{orgid}</if>
+        <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if>
+        <if test="taskId != null">and a.task_id = #{taskId}</if>
         <if test="taskName != null and taskName != ''">
             and a.task_name like concat('%', #{taskName}, '%')
         </if>
@@ -1731,6 +1727,9 @@
         <if test="orgid != null and orgid != ''">
             and orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -1787,132 +1786,135 @@
 
     <select id="getSfStatisticsHyperlink" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
             resultMap="ServiceSubtaskResult">
-            select id,
-            visit_count,
-            is_visit_again,
-            type,
-            orgid,
-            drcode,
-            drname,
-            leavehospitaldistrictcode,
-            leavehospitaldistrictname,
-            deptcode,
-            deptname,
-            sendstate,
-            preachform,
-            current_preachform,
-            excep,
-            nurse_id,
-            nurse_name,
-            taskid,
-            task_name,
-            visit_time,
-            finishtime,
-            endtime,
-            senddate,
-            suggest,
-            result,
-            templateid,
-            templatename,
-            patid,
-            sendname,
-            send_type,
-            recordid,
-            exrecallcount,
-            continue_flag,
-            continue_time_now,
-            continue_content,
-            continue_count,
-            continue_time_next,
-            task_situation,
-            remark
-            from service_subtask
-            where 1=1
-            and del_flag = 0
-            <if test="orgid != null and orgid != ''">
-                and orgid = #{orgid}
+        select id,
+        visit_count,
+        is_visit_again,
+        type,
+        orgid,
+        drcode,
+        drname,
+        leavehospitaldistrictcode,
+        leavehospitaldistrictname,
+        deptcode,
+        deptname,
+        sendstate,
+        preachform,
+        current_preachform,
+        excep,
+        nurse_id,
+        nurse_name,
+        taskid,
+        task_name,
+        visit_time,
+        finishtime,
+        endtime,
+        senddate,
+        suggest,
+        result,
+        templateid,
+        templatename,
+        patid,
+        sendname,
+        send_type,
+        recordid,
+        exrecallcount,
+        continue_flag,
+        continue_time_now,
+        continue_content,
+        continue_count,
+        continue_time_next,
+        task_situation,
+        remark
+        from service_subtask
+        where 1=1
+        and 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="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+            AND leavehospitaldistrictcode IN
+            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
+                     close=")">
+                #{leavehospitaldistrictcode}
+            </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="serviceType != null and serviceType.size() > 0">
+            AND service_type IN
+            <foreach collection="serviceType" item="serviceType" open="(" separator=","
+                     close=")">
+                #{serviceType}
+            </foreach>
+        </if>
+        <if test="startTime != null and endTime!=null">
+            AND visit_time >= DATE(#{startTime})
+            AND visit_time &lt; DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
+        </if>
+        <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
+        <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
+        <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}</if>
+        <!-- 鐩墠鍙粺璁¤闊冲拰闂嵎 -->
+        <if test="type != null">
+            and type = #{type}
+        </if>
+        <if test="visitCount != null and visitCount == 1">
+            AND visit_count = 1
+        </if>
+        <if test="visitCount != null and visitCount > 1">
+            AND visit_count > 1
+        </if>
+        <if test="groupKey != null and groupKey != '' and groupKeyList != null and groupKeyList.size>0">
+            AND ${groupKey} IN
+            <foreach collection="groupKeyList" item="key" open="(" separator=","
+                     close=")">
+                #{key}
+            </foreach>
+        </if>
+        AND sendstate IS NOT NULL
+        <if test="sendstates != null and sendstates.size() > 0">
+            AND sendstate IN
+            <foreach collection="sendstates" item="state" open="(" separator="," close=")">
+                #{state}
+            </foreach>
+        </if>
+        <if test="currentPreachform != null">
+            AND current_preachform = #{currentPreachform}
+            <if test="followUpCountStyle != null and followUpCountStyle = '1'">
+                AND sendstate != 4
             </if>
-            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
-                AND leavehospitaldistrictcode IN
-                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
-                         close=")">
-                    #{leavehospitaldistrictcode}
-                </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="serviceType != null and serviceType.size() > 0">
-                AND service_type IN
-                <foreach collection="serviceType" item="serviceType" open="(" separator=","
-                         close=")">
-                    #{serviceType}
-                </foreach>
-            </if>
-            <if test="startTime != null and endTime!=null">
-                AND visit_time >= DATE(#{startTime})
-                AND visit_time &lt; DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
-            </if>
-            <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
-            <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
-            <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
-            <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
-            <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
-            <if test="continueCount != null ">and continue_count = #{continueCount}</if>
-            <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}</if>
-            <!-- 鐩墠鍙粺璁¤闊冲拰闂嵎 -->
-            <if test="type != null">
-                and type = #{type}
-            </if>
-            <if test="visitCount != null and visitCount == 1">
-                AND visit_count = 1
-            </if>
-            <if test="visitCount != null and visitCount > 1">
-                AND visit_count > 1
-            </if>
-            <if test="groupKey != null and groupKey != '' and groupKeyList != null and groupKeyList.size>0">
-                AND ${groupKey} IN
-                <foreach collection="groupKeyList" item="key" open="(" separator=","
-                         close=")">
-                    #{key}
-                </foreach>
-            </if>
-            AND sendstate IS NOT NULL
-            <if test="sendstates != null and sendstates.size() > 0">
-                AND sendstate IN
-                <foreach collection="sendstates" item="state" open="(" separator="," close=")">
-                    #{state}
-                </foreach>
-            </if>
-            <if test="currentPreachform != null">
-                AND current_preachform = #{currentPreachform}
-                <if test="followUpCountStyle != null and followUpCountStyle = '1'">
-                    AND sendstate != 4
-                </if>
-            </if>
-            <if test="excep != null and excep != ''">
-                AND excep = #{excep}
-            </if>
-            <if test="taskSituation != null">
-                AND task_situation = #{taskSituation}
-            </if>
-            <if test="drcode != null and drcode != ''">
-                AND drcode = #{drcode}
-            </if>
-            <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">
-                AND leavehospitaldistrictcode = #{leavehospitaldistrictcode}
-            </if>
-            <if test="deptcode != null and deptcode != ''">
-                AND deptcode = #{deptcode}
-            </if>
-            order by endtime desc
-            <if test="pageSize != null  and pageNum != null">
-                limit ${pageSize} OFFSET ${pageNum}
-            </if>
+        </if>
+        <if test="excep != null and excep != ''">
+            AND excep = #{excep}
+        </if>
+        <if test="taskSituation != null">
+            AND task_situation = #{taskSituation}
+        </if>
+        <if test="drcode != null and drcode != ''">
+            AND drcode = #{drcode}
+        </if>
+        <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">
+            AND leavehospitaldistrictcode = #{leavehospitaldistrictcode}
+        </if>
+        <if test="deptcode != null and deptcode != ''">
+            AND deptcode = #{deptcode}
+        </if>
+        order by endtime desc
+        <if test="pageSize != null  and pageNum != null">
+            limit ${pageSize} OFFSET ${pageNum}
+        </if>
     </select>
 
     <select id="getSfStatisticsJoy" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
@@ -1926,6 +1928,9 @@
         and 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="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
@@ -1971,6 +1976,9 @@
         <if test="orgid != null and orgid != ''">
             and orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -2002,6 +2010,9 @@
         and 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="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND
             leavehospitaldistrictcode IN
@@ -2057,6 +2068,9 @@
         AND t.del_flag=0
         <if test="orgid != null and orgid != ''">
             and t.orgid = #{orgid}
+        </if>
+        <if test="campusid != null and campusid != ''">
+            and t.campusid = #{campusid}
         </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND t.leavehospitaldistrictcode IN
@@ -2141,6 +2155,9 @@
         <if test="orgid != null and orgid != ''">
             AND ss.orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            AND ss.campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND ss.leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -2197,6 +2214,9 @@
         and ss.del_flag=0
         <if test="orgid != null and orgid != ''">
             and ss.orgid = #{orgid}
+        </if>
+        <if test="campusid != null and campusid != ''">
+            and ss.campusid = #{campusid}
         </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND ss.leavehospitaldistrictcode IN
@@ -2768,6 +2788,9 @@
         <if test="orgid != null and orgid != ''">
             AND orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
@@ -2855,6 +2878,9 @@
         <if test="orgid != null and orgid != ''">
             AND orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            AND campusid = #{campusid}
+        </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND leavehospitaldistrictcode IN
             <foreach collection="leavehospitaldistrictcodes" item="code" open="(" separator="," close=")">
@@ -2880,6 +2906,9 @@
         AND deptcode IS NOT NULL AND deptcode != ''
         <if test="orgid != null and orgid != ''">
             AND orgid = #{orgid}
+        </if>
+        <if test="campusid != null and campusid != ''">
+            AND campusid = #{campusid}
         </if>
         <if test="deptcodes != null and deptcodes.size() > 0">
             AND deptcode IN
@@ -2912,6 +2941,9 @@
         AND service_type = 4
         <if test="orgid != null and orgid != ''">
             and orgid = #{orgid}
+        </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
         </if>
         <if test="sendstate != null">
             AND sendstate = #{sendstate}
@@ -2960,8 +2992,8 @@
     <select id="selectByScheduleIdAndLoop" resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where schedule_id = #{scheduleId}
-          and loop_count = #{loopCount}
-          and (del_flag is null or del_flag = '0')
+        and loop_count = #{loopCount}
+        and (del_flag is null or del_flag = '0')
         order by schedule_seq asc, id asc
     </select>
 
@@ -3013,6 +3045,9 @@
         <if test="orgid != null and orgid != ''">
             and orgid = #{orgid}
         </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
         <if test="sendstate != null">
             AND sendstate = #{sendstate}
         </if>
@@ -3050,6 +3085,9 @@
         t.taskid AS taskid,
         t.task_name AS taskName,
         d.asrtext AS optionresult,
+        d.score AS score,
+        d.targetvalue AS targetvalue,
+        d.value_type AS valueType,
         COUNT(*) AS count,
         CONCAT(ROUND(COUNT(*) * 100.0 / t2.total_count, 2), '%') AS ratio
         FROM
@@ -3065,37 +3103,183 @@
         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 t.taskid IN
-        <foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
-            #{taskId}
-        </foreach>
+        WHERE 1=1
+        <if test="taskIds != null and taskIds.size() > 0">
+            AND t.taskid IN
+            <foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
+                #{taskId}
+            </foreach>
+        </if>
+        <if test="valueType != null">AND d.value_type = #{valueType}</if>
+        <if test="scoreStart != null">AND d.score &gt;= #{scoreStart}</if>
+        <if test="scoreEnd != null">AND d.score &lt;= #{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
         t.taskid,
         d.questiontext
         ) t2 ON t2.taskid = t.taskid AND t2.questiontext = d.questiontext
-        WHERE t.taskid IN
-        <foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
-            #{taskId}
-        </foreach>
+        WHERE 1=1
+        <if test="taskIds != null and taskIds.size() > 0">
+            AND t.taskid IN
+            <foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
+                #{taskId}
+            </foreach>
+        </if>
+        <if test="valueType != null">AND d.value_type = #{valueType}</if>
+        <if test="scoreStart != null">AND d.score &gt;= #{scoreStart}</if>
+        <if test="scoreEnd != null">AND d.score &lt;= #{scoreEnd}</if>
+        <if test="questiontext != null  and questiontext != ''">and d.questiontext like concat('%', #{questiontext},
+            '%')
+        </if>
         AND s.sendstate = 6
         and d.del_flag=0
-      <if test="startOutHospTime != null">
-        AND date_format(s.endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
-    </if>
+        <if test="startOutHospTime != null">
+            AND date_format(s.endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
+        </if>
         <if test="endOutHospTime != null">
             AND date_format(s.endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')
         </if>
         GROUP BY
         t.taskid,
         d.questiontext,
+        d.score,
+        d.targetvalue,
+        d.asrtext,
+        d.value_type
+        ORDER BY
+        d.questiontext,
+        t.taskid
+    </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,
+        d.asrtext AS optionresult,
+        d.score AS score,
+        s.deptcode AS deptcode,
+        s.deptname AS deptname,
+        s.leavehospitaldistrictcode AS leavehospitaldistrictcode,
+        s.leavehospitaldistrictname AS leavehospitaldistrictname,
+        d.targetvalue AS targetvalue,
+        d.value_type AS valueType,
+        COUNT(*) AS count,
+        CONCAT(ROUND(COUNT(*) * 100.0 / t2.total_count, 2), '%') AS ratio
+        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
+        INNER JOIN (
+        SELECT
+        d.questiontext,
+        COUNT(*) AS total_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
+        WHERE 1=1
+        <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 &gt;= #{valueType}</if>
+        <if test="scoreStart != null">AND d.score = #{scoreStart}</if>
+        <if test="scoreEnd != null">AND d.score &lt;= #{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
+        ) t2 ON t2.questiontext = d.questiontext
+        WHERE 1=1
+        <if test="subtaskIds != null and subtaskIds.size() > 0">
+            AND s.id IN
+            <foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
+                #{subtaskId}
+            </foreach>
+        </if>
+        AND s.sendstate = 6
+        AND d.del_flag=0
+        <if test="valueType != null">AND d.value_type &gt;= #{valueType}</if>
+        <if test="scoreStart != null">AND d.score &gt;= #{scoreStart}</if>
+        <if test="scoreEnd != null">AND d.score &lt;= #{scoreEnd}</if>
+        <if test="questiontext != null  and questiontext != ''">and d.questiontext like concat('%', #{questiontext},
+            '%')
+        </if>
+        <if test="startOutHospTime != null">
+            AND date_format(s.endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
+        </if>
+        <if test="endOutHospTime != null">
+            AND date_format(s.endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')
+        </if>
+        GROUP BY
+        t.taskid,
+        d.questiontext,
+        d.score,
+        d.targetvalue,
         d.asrtext
         ORDER BY
         d.questiontext,
         t.taskid
     </select>
 
+    <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
+        <if test="endFinishTime != null">
+            AND d.create_time &lt; #{endFinishTime}
+        </if>
+        <if test="startFinishTime != null">
+            AND  d.create_time &gt;= #{startFinishTime}
+        </if>
+        <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>
+        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"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>

--
Gitblit v1.9.3