liusheng
2025-11-06 56e6e579618a13221e56cd49e72c9ac0904da95c
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -188,16 +188,16 @@
                )
            </if>
            <if test="startOutHospTime != null">
                AND TO_DATE(b.endtime,'YYYY-MM-DD') &gt;= TO_DATE(#{startOutHospTime},'YYYY-MM-DD')
                AND b.endtime &gt;= TO_DATE(#{startOutHospTime},'YYYY-MM-DD')
            </if>
            <if test="endOutHospTime != null">
                AND TO_DATE(b.endtime,'YYYY-MM-DD') &lt;= TO_DATE(#{endOutHospTime},'YYYY-MM-DD')
                AND b.endtime &lt;= TO_DATE(#{endOutHospTime},'YYYY-MM-DD')
            </if>
            <if test="startInHospTime != null">
                AND TO_DATE(b.starttime, 'YYYY-MM-DD') >= TO_DATE(#{startInHospTime}, 'YYYY-MM-DD')
                AND b.starttime >= TO_DATE(#{startInHospTime}, 'YYYY-MM-DD')
            </if>
            <if test="endInHospTime != null">
                AND TO_DATE(b.starttime, 'YYYY-MM-DD') &lt;= TO_DATE(#{startInHospTime}, 'YYYY-MM-DD')
                AND b.starttime &lt;= TO_DATE(#{endInHospTime}, 'YYYY-MM-DD')
            </if>
            <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
                '%')
@@ -674,99 +674,80 @@
    </delete>
    <select id="getDeptRanking" parameterType="com.smartor.domain.PatMedReq" resultType="com.smartor.domain.PatMedRes">
        SELECT deptname, COUNT(1) AS rc
        FROM (
        <if test="mz != null">
            SELECT deptname
            FROM pat_med_outhosp
            <where>
                del_flag=0
                <if test="deptcodeList != null">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="mz != null and zy != null">
            UNION ALL
        </if>
        <if test="zy != null">
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
                and inhospstate=0
                <if test="deptcodeList != null">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="cy != null and zy != null">
            UNION ALL
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
                and inhospstate=1
                <if test="deptcodeList != null">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        <if test="mz != null and zy != null and cy==null">
            UNION ALL
            SELECT deptname
            FROM pat_med_inhosp
            <where>
                del_flag=0
                and inhospstate=1
                <if test="deptcodeList != null">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </where>
        </if>
        ) AS combined
        GROUP BY deptname;
        SELECT deptname,
               count(1) AS rc
        FROM service_subtask
        WHERE finishtime >= #{startDate}
          AND finishtime &lt;= #{endDate}
          AND deptname is not null
        GROUP BY deptname
    </select>
    <select id="selectPatMedInhospCount" parameterType="com.smartor.domain.PatMedReq"
            resultType="com.smartor.domain.PatMedRes">
        SELECT SUM( rs ) AS rs,
        SUM( rc ) AS rc
        FROM (
        SELECT
        COUNT(1) AS rc,
        COUNT(DISTINCT patid) AS rs
        0 AS rs
        FROM
        pat_med_inhosp
        <where>
            del_flag=0
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
            <if test="zy != null">
                and inhospstate=0
                and TO_DATE(starttime,'YYYY-MM-DD') &gt;= TO_DATE(#{startDate},'YYYY-MM-DD')
                and TO_DATE(starttime,'YYYY-MM-DD') &lt;= TO_DATE(#{endDate},'YYYY-MM-DD')
                and starttime &gt;= #{startDate}
                and starttime &gt;= #{endDate}
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and deptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </if>
            <if test="cy != null">
                and inhospstate=1
                and TO_DATE(endtime,'YYYY-MM-DD') &gt;= TO_DATE(#{startDate},'YYYY-MM-DD')
                and TO_DATE(endtime,'YYYY-MM-DD') &lt;= TO_DATE(#{endDate},'YYYY-MM-DD')
                and endtime &gt;= #{startDate}
                and endtime &lt;= #{endDate}
                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                    and leaveldeptcode in
                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                        #{deptcode}
                    </foreach>
                </if>
            </if>
            <if test="deptcodeList != null">
        </where>
        union all
        select
        0 AS rc,
        count(1) AS rs
        FROM
        service_subtask
        <where>
            del_flag = 0
            and service_type=2
            <if test="orgid != null">
                AND orgid = #{orgid}
            </if>
            <if test="startDate != null">
                and visit_time &gt;= #{startDate}
            </if>
            <if test="endDate != null">
                and visit_time &lt;= #{endDate}
            </if>
            <if test="deptcodeList != null   and deptcodeList.size() > 0">
                and deptcode in
                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                    #{deptcode}
                </foreach>
            </if>
        </where>
        ) AS combined_data
    </select>
    <select id="selectEndtimeMax" resultType="java.util.Date">