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 |  218 +++++++++++++++--------------------------------------
 1 files changed, 63 insertions(+), 155 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index d44dd96..24f8484 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -212,8 +212,6 @@
         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
@@ -856,164 +854,74 @@
 
     <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 is not null
-        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 is not null
-        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>
 

--
Gitblit v1.9.3