From 2cb8d69254e70e45d8957f60a9055f80487e17b1 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 16 四月 2026 09:37:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml |  449 ++++++++++++++++++-------------------------------------
 1 files changed, 149 insertions(+), 300 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index c517013..24f8484 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -212,83 +212,81 @@
         pat_med_inhosp b
         JOIN
         pat_archive a ON a.id = b.patid
-        LEFT JOIN
-        pat_archivetag c ON c.patid = a.id AND (c.del_flag = 0 OR c.del_flag IS NULL)
         where 1=1
-            AND a.del_flag = 0
-            AND b.del_flag = 0
-            AND a.idcardno IS NOT NULL
-            <if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &gt;=
-                date_format(#{startOutHospTime},'%y%m%d')
-            </if>
-            <if test="endOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &lt;=
-                date_format(#{endOutHospTime},'%y%m%d')
-            </if>
-            <if test="startInHospTime != null ">and date_format(b.starttime,'%y%m%d') &gt;=
-                date_format(#{startInHospTime},'%y%m%d')
-            </if>
-            <if test="endInHospTime != null ">and date_format(b.starttime,'%y%m%d') &lt;=
-                date_format(#{endInHospTime},'%y%m%d')
-            </if>
-            <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
-                '%')
-            </if>
-            <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
-            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
-                concat('%', #{hospitaldistrictname}, '%')
-            </if>
-            <if test="endtime != null ">and b.endtime = #{endtime}</if>
-            <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
-            <if test="managementDoctorCode != null ">and b.management_doctor_code = #{managementDoctorCode}</if>
-            <if test="inhospno != null ">and b.inhospno = #{inhospno}</if>
-            <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
-            <if test="orgid != null ">and b.orgid = #{orgid}</if>
-            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
-            <if test="endtime != null ">and b.endtime = #{endtime}</if>
-            <if test="patno != null ">and b.patno = #{patno}</if>
-            <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
-            <if test="nurseName != null and nurseName != ''">and b.nurse_name = #{nurseName}</if>
-            <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
-            <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
-            <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
-            <if test="cry != null and cry == 0 ">and b.endtime is null</if>
-            <if test="cry != null and cry == 1 ">and b.inhospstate=1</if>
-            <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
-            <if test="campusid != null ">and b.campusid = #{campusid}</if>
-            <if test="schemestatus != null ">and b.schemestatus = #{schemestatus}</if>
-            <if test="outWayId != null ">and b.out_way_id = #{outWayId}</if>
-            <if test="outWayName != null ">and b.out_way_name = #{outWayName}</if>
-            <if test="leaveldeptcode != null ">and b.leaveldeptcode = #{leaveldeptcode}</if>
-            <if test="leavediagname != null  and leavediagname != ''">and b.leavediagname like concat('%',
-                #{leavediagname}, '%')
-            </if>
-            <if test="drname != null  and drname != ''">and b.drname like concat('%', #{drname}, '%')</if>
-            <if test="leaveldeptname != null  and leaveldeptname != ''">and b.leaveldeptname like concat('%',
-                #{leaveldeptname}, '%')
-            </if>
-            <if test="deptname != null  and deptname != ''">and b.deptname like concat('%',
-                #{deptname}, '%')
-            </if>
-            <if test="patid != null  and patid != ''">and a.id =#{patid}
-            </if>
-            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
-                b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')
-            </if>
+        AND a.del_flag = 0
+        AND b.del_flag = 0
+        AND a.idcardno IS NOT NULL
+        <if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &gt;=
+            date_format(#{startOutHospTime},'%y%m%d')
+        </if>
+        <if test="endOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &lt;=
+            date_format(#{endOutHospTime},'%y%m%d')
+        </if>
+        <if test="startInHospTime != null ">and date_format(b.starttime,'%y%m%d') &gt;=
+            date_format(#{startInHospTime},'%y%m%d')
+        </if>
+        <if test="endInHospTime != null ">and date_format(b.starttime,'%y%m%d') &lt;=
+            date_format(#{endInHospTime},'%y%m%d')
+        </if>
+        <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
+            '%')
+        </if>
+        <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
+        <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
+            concat('%', #{hospitaldistrictname}, '%')
+        </if>
+        <if test="endtime != null ">and b.endtime = #{endtime}</if>
+        <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
+        <if test="managementDoctorCode != null ">and b.management_doctor_code = #{managementDoctorCode}</if>
+        <if test="inhospno != null ">and b.inhospno = #{inhospno}</if>
+        <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
+        <if test="orgid != null ">and b.orgid = #{orgid}</if>
+        <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
+        <if test="endtime != null ">and b.endtime = #{endtime}</if>
+        <if test="patno != null ">and b.patno = #{patno}</if>
+        <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
+        <if test="nurseName != null and nurseName != ''">and b.nurse_name = #{nurseName}</if>
+        <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
+        <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
+        <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
+        <if test="cry != null and cry == 0 ">and b.endtime is null</if>
+        <if test="cry != null and cry == 1 ">and b.inhospstate=1</if>
+        <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
+        <if test="campusid != null ">and b.campusid = #{campusid}</if>
+        <if test="schemestatus != null ">and b.schemestatus = #{schemestatus}</if>
+        <if test="outWayId != null ">and b.out_way_id = #{outWayId}</if>
+        <if test="outWayName != null ">and b.out_way_name = #{outWayName}</if>
+        <if test="leaveldeptcode != null ">and b.leaveldeptcode = #{leaveldeptcode}</if>
+        <if test="leavediagname != null  and leavediagname != ''">and b.leavediagname like concat('%',
+            #{leavediagname}, '%')
+        </if>
+        <if test="drname != null  and drname != ''">and b.drname like concat('%', #{drname}, '%')</if>
+        <if test="leaveldeptname != null  and leaveldeptname != ''">and b.leaveldeptname like concat('%',
+            #{leaveldeptname}, '%')
+        </if>
+        <if test="deptname != null  and deptname != ''">and b.deptname like concat('%',
+            #{deptname}, '%')
+        </if>
+        <if test="patid != null  and patid != ''">and a.id =#{patid}
+        </if>
+        <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
+            b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')
+        </if>
 
-            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0">
-                AND b.leavehospitaldistrictcode IN
-                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
-                         close=")">
-                    #{leavehospitaldistrictcode}
-                </foreach>
-            </if>
-            <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0">
-                AND b.leaveldeptcode IN
-                <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
-                         close=")">
-                    #{leaveldeptcode}
-                </foreach>
-            </if>
+        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0">
+            AND b.leavehospitaldistrictcode IN
+            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
+                     close=")">
+                #{leavehospitaldistrictcode}
+            </foreach>
+        </if>
+        <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0">
+            AND b.leaveldeptcode IN
+            <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+                     close=")">
+                #{leaveldeptcode}
+            </foreach>
+        </if>
         GROUP BY
         b.inhospid,
         a.age,
@@ -854,239 +852,90 @@
         </foreach>
     </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 1=1
-            and del_flag=0
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and deptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-            <if test="orgid != null and orgid != ''">
-                and orgid = #{orgid}
-            </if>
-        </if>
-        <if test="mz != null and zy != null">
-            UNION ALL
-        </if>
-        <if test="zy != null">
-            SELECT deptname
-            FROM pat_med_inhosp
-            where 1=1
-            and del_flag=0
-            and inhospstate=0
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and deptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-            <if test="orgid != null and orgid != ''">
-                and orgid = #{orgid}
-            </if>
-        </if>
-        <if test="cy != null and zy != null">
-            UNION ALL
-            SELECT deptname
-            FROM pat_med_inhosp
-            where 1=1
-            and del_flag=0
-            and inhospstate=1
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and deptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-            <if test="orgid != null and orgid != ''">
-                and orgid = #{orgid}
-            </if>
-        </if>
-        <if test="mz != null and zy != null and cy==null">
-            UNION ALL
-            SELECT deptname
-            FROM pat_med_inhosp
-            where 1=1
-            and del_flag=0
-            and inhospstate=1
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and deptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-            <if test="orgid != null and orgid != ''">
-                and orgid = #{orgid}
-            </if>
-        </if>
-        ) AS combined
-        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,
-        SUM( scsf ) AS scsf,
-        SUM( zcsf ) AS zcsf,
-        SUM( zbsf ) AS zbsf
+        SELECT SUM(rc) AS rc,
+               SUM(rs) AS rs,
+               SUM(scsf) AS scsf,
+               SUM(zcsf) AS zcsf,
+               SUM(zbsf) AS zbsf
         FROM (
-        <!-- 鍑洪櫌浜烘-->
-        SELECT
-        COUNT(1) AS rc,
-        0 AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        pat_med_inhosp
-        where 1=1
-        and del_flag=0
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="zy != null">
-            and inhospstate=0
-            and date_format(starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
-            and date_format(starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and deptcode in
+            <!-- 鍑洪櫌浜烘锛氬幓鎺� date_format 鍖呰锛屼娇鏃ユ湡瀛楁绱㈠紩鐢熸晥 -->
+            SELECT
+                COUNT(1) AS rc,
+                0 AS rs,
+                0 AS scsf,
+                0 AS zcsf,
+                0 AS zbsf
+            FROM pat_med_inhosp
+            JOIN pat_archive ON pat_archive.id = pat_med_inhosp.patid
+            WHERE pat_med_inhosp.del_flag = 0
+            <if test="orgid != null and orgid != ''">
+                AND pat_med_inhosp.orgid = #{orgid}
+            </if>
+            AND pat_archive.idcardno IS NOT NULL
+            <if test="zy != null">
+                AND pat_med_inhosp.inhospstate = 0
+                AND pat_med_inhosp.starttime &gt;= #{startDate}
+                AND pat_med_inhosp.starttime &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+                <if test="deptcodeList != null and deptcodeList.size() > 0">
+                    AND pat_med_inhosp.deptcode IN
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </if>
+            <if test="cy != null">
+                AND pat_med_inhosp.inhospstate = 1
+                AND pat_med_inhosp.endtime &gt;= #{startDate}
+                AND pat_med_inhosp.endtime &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+                <if test="deptcodeList != null and deptcodeList.size() > 0">
+                    AND pat_med_inhosp.leaveldeptcode IN
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </if>
+            UNION ALL
+            <!-- 闅忚鏈嶅姟/棣栨/鍐嶆/涓撶梾闅忚锛氬悎骞朵负鍗曟鎵弿锛岀敤鏉′欢鑱氬悎浠f浛4涓� UNION ALL -->
+            SELECT
+                0 AS rc,
+                COUNT(1) AS rs,
+                SUM(CASE WHEN service_type = 2 AND visit_count = 1 THEN 1 ELSE 0 END) AS scsf,
+                SUM(CASE WHEN service_type = 2 AND visit_count > 1  THEN 1 ELSE 0 END) AS zcsf,
+                SUM(CASE WHEN service_type = 13                      THEN 1 ELSE 0 END) AS zbsf
+            FROM service_subtask
+            WHERE del_flag = 0
+            AND service_type IN (2, 13)
+            <if test="orgid != null and orgid != ''">
+                AND orgid = #{orgid}
+            </if>
+            <if test="startDate != null">
+                AND visit_time &gt;= #{startDate}
+            </if>
+            <if test="endDate != null">
+                AND visit_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+            </if>
+            <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 date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
-            and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and leaveldeptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-        </if>
-        <!-- 闅忚鏈嶅姟浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        count(1) AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 棣栨闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        count(1) AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        and visit_count = 1
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 鍐嶆闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        0 AS scsf,
-        count(1) AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        and visit_count > 1
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 涓撶梾闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        count(1) AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=13
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
         ) AS combined_data
     </select>
 
+    <!-- 鏌ヨ涓変釜缁村害浠绘剰涓�涓湭澶勭悊鐨勫嚭闄㈡偅鑰� -->
+    <select id="selectNeedProcessList" resultMap="PatMedInhospResult">
+        SELECT *
+        FROM pat_med_inhosp
+        WHERE inhospstate = '1'
+          AND fuflag = '1'
+          AND del_flag = '0'
+          AND (
+                    dept_check_flag = '0'
+                OR ward_check_flag = '0'
+                OR diag_check_flag = '0'
+            )
+    </select>
 </mapper>

--
Gitblit v1.9.3