陈昶聿
5 天以前 ec23ec3d3dc4ec1ba7d79ba4f46ae2c31d5a16a9
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -100,14 +100,19 @@
    </resultMap>
    <resultMap type="com.smartor.domain.ServiceSubtaskCategoryCount" id="ServiceSubtaskCategoryCountResult">
        <result property="month" column="month"/>
        <result property="serviceType" column="service_type"/>
        <result property="subTaskId" column="subTaskId"/>
        <result property="completedCount" column="completed_count"/>
        <result property="allCount" column="all_count"/>
        <result property="completedPercent" column="completed_percent"/>
        <result property="name" column="name"/>
    <resultMap type="com.smartor.domain.ServiceSubtaskScriptCount" id="ServiceSubtaskScriptCountResult">
        <result property="scriptid" column="scriptid"/>
        <result property="templateid" column="templateid"/>
        <result property="scriptType" column="script_type"/>
        <result property="scriptContent" column="script_content"/>
        <result property="subtaskType" column="subtask_type"/>
        <result property="completedQuantity" column="completed_quantity"/>
        <result property="allQuantity" column="all_quantity"/>
        <result property="completedPercentage" column="completed_percentage"/>
        <result property="optionText" column="option_text"/>
        <result property="chosenQuantity" column="chosen_quantity"/>
        <result property="chosenPercentage" column="chosen_percentage"/>
        <result property="options" column="options"/>
    </resultMap>
    <sql id="selectServiceSubtaskVo">
@@ -205,32 +210,34 @@
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="taskid != null ">and taskid = #{taskid}</if>
            <if test="serviceType != null ">and service_type = #{serviceType}</if>
            <if test="patid != null ">and patid = #{patid}</if>
            <if test="sendstates!=null">
                AND sendstate IN
                <foreach collection="sendstates" item="sendstate" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{sendstate}
                </foreach>
            </if>
        </where>
    </select>
    <select id="queryServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <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="sendstate != null ">and sendstate = #{sendstate}</if>
        </where>
    </select>
@@ -238,15 +245,16 @@
    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="sendname != null  and sendname != ''">and sendname like concat('%', #{sendname}, '%')</if>
            <if test="phone != null  and phone != ''">and phone = #{phone}</if>
            <if test="leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''">and
                leavehospitaldistrictcode = #{leavehospitaldistrictcode}
                AND leavehospitaldistrictcode = #{leavehospitaldistrictcode}
            </if>
            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
                leavehospitaldistrictname = #{leavehospitaldistrictname}
                AND leavehospitaldistrictname = #{leavehospitaldistrictname}
            </if>
            <if test="leavediagname != null  and leavediagname != ''">and leavediagname like concat('%',
                #{leavediagname}, '%')
@@ -272,7 +280,7 @@
            <if test="taskid != null ">and taskid = #{taskid}</if>
            <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
            <if test="templatename != null  and templatename != ''">and templatename like concat('%', #{templatename},
                '%')
                AND '%')
            </if>
            <if test="startOutHospTime != null">
                AND date_format(endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
@@ -294,16 +302,16 @@
                <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                    AND leavehospitaldistrictcode IN
                    <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                             separator=","
                             close=")">
                        #{leavehospitaldistrictcode}
                             AND separator=","
                             AND close=")">
                    #{leavehospitaldistrictcode}
                    </foreach>
                </if>
                <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
                    AND deptcode IN
                    <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                             close=")">
                        #{leaveldeptcode}
                             AND close=")">
                    #{leaveldeptcode}
                    </foreach>
                </if>
            </if>
@@ -311,16 +319,16 @@
                <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                    AND (leavehospitaldistrictcode IN
                    <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                             separator=","
                             close=")">
                        #{leavehospitaldistrictcode}
                             AND separator=","
                             AND close=")">
                    #{leavehospitaldistrictcode}
                    </foreach>
                </if>
                <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
                    OR deptcode IN
                    <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                             close="))">
                        #{leaveldeptcode}
                             AND close="))">
                    #{leaveldeptcode}
                    </foreach>
                </if>
            </if>
@@ -379,19 +387,19 @@
            <if test="taskGuid != null">and task_guid = #{taskGuid}</if>
            <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
            <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if>
<!--            <if test="dateLimit != null and dateLimit = '1'"> and CURDATE() + 1 > long_send_time</if>-->
            <!--            <if test="dateLimit != null and dateLimit = '1'"> and CURDATE() + 1 > long_send_time</if>-->
            <!-- <if test="visitTime != null">and visit_time = #{visitTime}</if> -->
            <!--<if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
            <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>-->
            <if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0">
                AND visit_dept_code IN
                <foreach collection="visitDeptCodes" item="visitDeptCodes" open="("
                         separator=","
                         close=")">
                         AND separator=","
                         AND close=")">
                    #{visitDeptCodes}
                </foreach>
            </if>
        </where>
        <if test="sort != null  and sort==0">order by endtime asc</if>
        <if test="sort != null  and sort==1">order by endtime desc</if>
        <if test="sort != null  and sort==2">order by long_send_time asc</if>
@@ -403,14 +411,28 @@
        <!-- order by update_time desc,id desc -->
    </select>
    <select id="getCompensateServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        WHERE 1=1
            AND del_flag=0
            <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>
    </select>
    <select id="selectServiceSubtaskListByCreateTime" parameterType="com.smartor.domain.ServiceSubtaskVO"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
            <if test="createStartTime != null  and createEndTime != null">and create_time BETWEEN #{createStartTime} AND
                #{createEndTime}
        WHERE 1=1
            and del_flag=0
            <if test="createStartTime != null  and createEndTime != null">
            and create_time BETWEEN #{createStartTime} AND #{createEndTime}
            </if>
            <if test="createBy != null ">and create_by = #{createBy}</if>
            <if test="sendname != null ">and sendname = #{sendname}</if>
@@ -425,20 +447,18 @@
            <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if>
            <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
            <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
        </where>
    </select>
    <select id="selectServiceSubtaskListAgain" parameterType="com.smartor.domain.ServiceSubtaskVO"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            and upid is not null
            and visit_count > 1
            <if test="createStartTime != null  and createEndTime != null">and create_time BETWEEN #{createStartTime} AND
                #{createEndTime}
            <if test="createStartTime != null  and createEndTime != null">
            and create_time BETWEEN #{createStartTime} AND #{createEndTime}
            </if>
            <if test="senddate != null ">and senddate = #{senddate}</if>
            <if test="senduuid != null  and senduuid != ''">and senduuid = #{senduuid}</if>
@@ -483,21 +503,20 @@
            <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
            <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
            <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
        </where>
    </select>
    <select id="selectSendstateByCondition" parameterType="com.smartor.domain.ServiceSubtask" resultType="Integer">
        SELECT b.sendstate
        from service_task a
        JOIN service_subtask b on a.taskid = b.taskid and a.pat_cycle = 0 and b.del_flag = 0
        <where>b.taskid = #{taskid}
        WHERE 1=1
AND b.taskid = #{taskid}
            and b.patid = #{patid}
            <if test="createTime != null and createTime != ''">
                DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%')
                AND DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%')
            </if>
            <if test="sendstate != null ">and b.sendstate = #{sendstate}</if>
        </where>
    </select>
    <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double">
@@ -532,16 +551,17 @@
    <select id="selectTimelyRateDetail" parameterType="com.smartor.domain.ServiceSubtask"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            id in (
            SELECT id FROM
            (SELECT id, visit_time, finishtime,
            (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) &lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(),
            finishtime
            ), '%y%m%d' ) )
            THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask
            WHERE del_flag=0
            -- AND visit_time &lt; NOW()
        WHERE 1=1
            AND id in (
            AND SELECT id FROM
            AND (SELECT id, visit_time, finishtime,
            AND (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) &lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(),
            AND finishtime
            AND ), '%y%m%d' ) )
            AND THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask
            AND WHERE del_flag=0
            AND -- AND visit_time &lt; NOW()
            <if test="starttime != null and endtime!=null">
                AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d')
                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endtime},'%y%m%d')
@@ -551,15 +571,15 @@
            <if test="deptcode != null  and deptcode != ''">and deptcode = #{deptcode}</if>
            <if test="deptname != null  and deptname != ''">and deptname = #{deptname}</if>
            <if test="leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''">and
                leavehospitaldistrictcode = #{leavehospitaldistrictcode}
                AND leavehospitaldistrictcode = #{leavehospitaldistrictcode}
            </if>
            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
                leavehospitaldistrictname = #{leavehospitaldistrictname}
                AND leavehospitaldistrictname = #{leavehospitaldistrictname}
            </if>
            <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
            <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
            ) a where a.finished =1)
        </where>
            AND ) a where a.finished =1)
    </select>
    <select id="selectServiceSubtaskById" parameterType="Long" resultMap="ServiceSubtaskResult">
@@ -939,10 +959,11 @@
            <if test="taskSituation != null">task_situation=#{taskSituation},</if>
            <if test="isabnormal != null">isabnormal=#{isabnormal},</if>
        </trim>
        <where>
        WHERE 1=1
            <if test="patid != null ">and patid = #{patid}</if>
            <if test="taskid != null ">and taskid = #{taskid}</if>
        </where>
    </update>
    <update id="updateServiceSubtaskByCondition" parameterType="com.smartor.domain.ServiceSubtask">
@@ -1147,26 +1168,27 @@
    <select id="getSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1177,7 +1199,7 @@
            <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
            <if test="visitDeptName != null">abd visit_dept_name = #{visitDeptName}</if>
            <if test="isabnormal != null">abd isabnormal = #{isabnormal}</if>
        </where>
    </select>
    <select id="getSfStatisticsJoy" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
@@ -1187,26 +1209,27 @@
        config_key='joyCount')) joyAllCount
        FROM service_subtask_detail a
        WHERE sub_id IN(SELECT id FROM service_subtask t
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1217,7 +1240,7 @@
            <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
            <if test="visitDeptName != null">abd visit_dept_name = #{visitDeptName}</if>
            <if test="isabnormal != null">abd isabnormal = #{isabnormal}</if>
        </where>
        )
        AND targetid IN ( SELECT id FROM ivr_liba_target WHERE assortid IN (SELECT config_value FROM sys_config WHERE
        config_key='joyCount'))
@@ -1229,26 +1252,27 @@
        SELECT joyName,joyCount,joyAllCount,ROUND(joyCount/joyAllCount,2) joyTotal FROM (
        SELECT targetname joyName,
        (select COUNT(sub_id) FROM service_subtask_detail WHERE sub_id IN(SELECT id FROM service_subtask t
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1256,30 +1280,31 @@
                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
        </where>
        ) AND targetid=a.id) joyCount , (SELECT COUNT(*) from (select sub_id FROM service_subtask_detail
        WHERE sub_id IN(SELECT id FROM service_subtask t
        <where>
            del_flag=0
        WHERE 1=1
            AND del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND
                leavehospitaldistrictcode IN
                AND leavehospitaldistrictcode IN
                <foreach
                        collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                        close=")">
                        AND collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                        AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1287,7 +1312,7 @@
                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
            </if>
        </where>
        GROUP BY sub_id ) ) ta ) joyAllCount
        FROM ivr_liba_target a
        WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key=
@@ -1305,27 +1330,28 @@
        COUNT(sub_id) joyCount
        FROM service_subtask_detail a
        INNER JOIN service_subtask t ON a.sub_id = t.id
        <where>
            a.del_flag=0
        WHERE 1=1
            AND a.del_flag=0
            AND t.del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND t.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND t.deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND t.service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1346,7 +1372,7 @@
            <if test="type != null">
                and t.type = #{type}
            </if>
        </where>
        GROUP BY a.sub_id
    </select>
@@ -1354,7 +1380,10 @@
            resultMap="ServiceSubtaskScriptCountResult">
        SELECT
        a.id as scriptid,
        a.templateid as templateid,
        a.script_type,
        a.script_content,
        b.subtask_type,
        b.completed_quantity,
        b.all_quantity,
        ROUND(b.completed_quantity/b.all_quantity,2) as completed_percentage
@@ -1368,6 +1397,7 @@
        INNER JOIN(
        SELECT
        ssd.scriptid AS scriptid,
        ss.type as subtask_type,
        SUM(CASE WHEN IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
        AND IFNULL(ssd.matchedtext,ssd.asrtext) != '' THEN 1
        ELSE 0 END) AS completed_quantity,
@@ -1426,28 +1456,29 @@
        FROM
        service_subtask_detail ssd
        INNER JOIN service_subtask ss ON ssd.sub_id = ss.id
        <where>
            ss.del_flag=0
        WHERE 1=1
            AND ss.del_flag=0
            AND IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
            AND IFNULL(ssd.matchedtext,ssd.asrtext) != ''
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND ss.leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="deptcodes != null and deptcodes.size() > 0">
                AND ss.deptcode IN
                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{deptcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND ss.service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                         AND close=")">
                    #{serviceType}
                </foreach>
            </if>
@@ -1462,7 +1493,7 @@
            <if test="configValue != null and configValue != ''">
                AND ssd.categoryid IN (${configValue})
            </if>
        </where>
        group by ssd.scriptid, IFNULL(ssd.matchedtext,ssd.asrtext)
    </select>
@@ -1811,16 +1842,17 @@
    <!-- 优化的统计查询:直接在数据库层完成聚合计算 -->
    <select id="countByCondition" parameterType="com.smartor.domain.ServiceSubtaskVO" resultType="map">
        SELECT
            SUM(CASE WHEN sendstate = 4 THEN 1 ELSE 0 END) AS wzx,
            SUM(CASE WHEN sendstate != 4 AND sendstate != 2 THEN 1 ELSE 0 END) AS ysf,
            SUM(CASE WHEN sendstate = 5 THEN 1 ELSE 0 END) AS fssb,
            SUM(CASE WHEN sendstate >= 3 OR sendstate = 1 THEN 1 ELSE 0 END) AS yfs,
            SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS dsf,
            SUM(CASE WHEN sendstate = 1 THEN 1 ELSE 0 END) AS blq,
            SUM(CASE WHEN excep IS NOT NULL AND excep != '0' THEN 1 ELSE 0 END) AS yc
        SUM(CASE WHEN sendstate = 4 THEN 1 ELSE 0 END) AS wzx,
        SUM(CASE WHEN sendstate != 4 AND sendstate != 2 THEN 1 ELSE 0 END) AS ysf,
        SUM(CASE WHEN sendstate = 5 THEN 1 ELSE 0 END) AS fssb,
        SUM(CASE WHEN sendstate >= 3 OR sendstate = 1 THEN 1 ELSE 0 END) AS yfs,
        SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS dsf,
        SUM(CASE WHEN sendstate = 1 THEN 1 ELSE 0 END) AS blq,
        SUM(CASE WHEN excep IS NOT NULL AND excep != '0' THEN 1 ELSE 0 END) AS yc
        FROM service_subtask
        <where>
            del_flag = 0
        WHERE 1=1
            AND del_flag = 0
            <if test="sendname != null and sendname != ''">
                AND sendname LIKE CONCAT('%', #{sendname}, '%')
            </if>
@@ -1831,16 +1863,16 @@
                <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                    AND leavehospitaldistrictcode IN
                    <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                             separator=","
                             close=")">
                        #{leavehospitaldistrictcode}
                             AND separator=","
                             AND close=")">
                    #{leavehospitaldistrictcode}
                    </foreach>
                </if>
                <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
                    AND deptcode IN
                    <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                             close=")">
                        #{leaveldeptcode}
                             AND close=")">
                    #{leaveldeptcode}
                    </foreach>
                </if>
            </if>
@@ -1848,16 +1880,16 @@
                <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                    AND (leavehospitaldistrictcode IN
                    <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                             separator=","
                             close=")">
                        #{leavehospitaldistrictcode}
                             AND separator=","
                             AND close=")">
                    #{leavehospitaldistrictcode}
                    </foreach>
                </if>
                <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
                    OR deptcode IN
                    <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
                             close="))">
                        #{leaveldeptcode}
                             AND close="))">
                    #{leaveldeptcode}
                    </foreach>
                </if>
            </if>
@@ -1942,14 +1974,15 @@
            <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 collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
                             AND 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}
                    #{leaveldeptcode}
                    </foreach>
                </if>
            </if>
@@ -1977,7 +2010,7 @@
            <if test="visitCount != null and visitCount > 1">
                AND visit_count > 1
            </if>
        </where>
    </select>
</mapper>