From 43e7dc349b8bc1515911e64fb12ea820afd1b0d2 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 23 三月 2026 17:07:34 +0800
Subject: [PATCH] 门急诊分表代码(增、改、查)提交

---
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml |  172 +++++++++++++++++++++++++--------------------------------
 1 files changed, 76 insertions(+), 96 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index c22548e..c28555d 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1927,25 +1927,6 @@
             </foreach>
         </if>
 
-        <!--        GROUP BY-->
-        <!--        <choose>-->
-        <!--            <when test="timeType == 'day'">-->
-        <!--                DATE_FORMAT(visit_time, '%Y-%m-%d')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'month'">-->
-        <!--                DATE_FORMAT(visit_time, '%Y-%m')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'year'">-->
-        <!--                DATE_FORMAT(visit_time, '%Y')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'week'">-->
-        <!--                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0'))-->
-        <!--            </when>-->
-        <!--            <otherwise>-->
-        <!--                DATE_FORMAT(visit_time, '%Y-%m-%d')-->
-        <!--            </otherwise>-->
-        <!--        </choose>-->
-
         UNION ALL
 
         -- 鍑洪櫌浜烘鏁版嵁
@@ -1997,85 +1978,48 @@
             </foreach>
         </if>
 
-        <!--        GROUP BY-->
-        <!--        <choose>-->
-        <!--            <when test="timeType == 'day'">-->
-        <!--                DATE_FORMAT(endtime, '%Y-%m-%d')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'month'">-->
-        <!--                DATE_FORMAT(endtime, '%Y-%m')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'year'">-->
-        <!--                DATE_FORMAT(endtime, '%Y')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'week'">-->
-        <!--                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0'))-->
-        <!--            </when>-->
-        <!--            <otherwise>-->
-        <!--                DATE_FORMAT(endtime, '%Y-%m-%d')-->
-        <!--            </otherwise>-->
-        <!--        </choose>-->
+<!--        UNION ALL-->
 
-        UNION ALL
+<!--        &#45;&#45; 闂ㄨ瘖浜烘鏁版嵁-->
+<!--        SELECT-->
+<!--        <choose>-->
+<!--            <when test="timeType == 'day'">-->
+<!--                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,-->
+<!--            </when>-->
+<!--            <when test="timeType == 'month'">-->
+<!--                DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod,-->
+<!--            </when>-->
+<!--            <when test="timeType == 'year'">-->
+<!--                DATE_FORMAT(admitdate, '%Y') AS timePeriod,-->
+<!--            </when>-->
+<!--            <when test="timeType == 'week'">-->
+<!--                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod,-->
+<!--            </when>-->
+<!--            <otherwise>-->
+<!--                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,-->
+<!--            </otherwise>-->
+<!--        </choose>-->
+<!--        0 AS dischargeFollowCount,-->
+<!--        0 AS outpatientFollowCount,-->
+<!--        0 AS pmiCount,-->
+<!--        1 AS pmoCount-->
+<!--        FROM pat_med_outhosp-->
+<!--        WHERE del_flag = '0'-->
+<!--        <if test="startDate != null and endDate != null">-->
+<!--            AND admitdate >= #{startDate}-->
+<!--            AND admitdate &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)-->
+<!--        </if>-->
+<!--        <if test="orgid != null">-->
+<!--            AND orgid = #{orgid}-->
+<!--        </if>-->
 
-        -- 闂ㄨ瘖浜烘鏁版嵁
-        SELECT
-        <choose>
-            <when test="timeType == 'day'">
-                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,
-            </when>
-            <when test="timeType == 'month'">
-                DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod,
-            </when>
-            <when test="timeType == 'year'">
-                DATE_FORMAT(admitdate, '%Y') AS timePeriod,
-            </when>
-            <when test="timeType == 'week'">
-                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod,
-            </when>
-            <otherwise>
-                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,
-            </otherwise>
-        </choose>
-        0 AS dischargeFollowCount,
-        0 AS outpatientFollowCount,
-        0 AS pmiCount,
-        1 AS pmoCount
-        FROM pat_med_outhosp
-        WHERE del_flag = '0'
-        <if test="startDate != null and endDate != null">
-            AND admitdate >= #{startDate}
-            AND admitdate &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
-        </if>
-        <if test="orgid != null">
-            AND orgid = #{orgid}
-        </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="deptcodes != null and deptcodes.size() > 0">
-            AND deptcode IN
-            <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-
-        <!--        GROUP BY-->
-        <!--        <choose>-->
-        <!--            <when test="timeType == 'day'">-->
-        <!--                DATE_FORMAT(admitdate, '%Y-%m-%d')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'month'">-->
-        <!--                DATE_FORMAT(admitdate, '%Y-%m')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'year'">-->
-        <!--                DATE_FORMAT(admitdate, '%Y')-->
-        <!--            </when>-->
-        <!--            <when test="timeType == 'week'">-->
-        <!--                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0'))-->
-        <!--            </when>-->
-        <!--            <otherwise>-->
-        <!--                DATE_FORMAT(admitdate, '%Y-%m-%d')-->
-        <!--            </otherwise>-->
-        <!--        </choose>-->
         ) AS combined_data
         GROUP BY timePeriod
         ORDER BY timePeriod DESC
@@ -2134,6 +2078,14 @@
                     #{leaveldeptcode}
                 </foreach>
             </if>
+        </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=")">
+                #{visitDeptCodes}
+            </foreach>
         </if>
         <if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''">
             AND leavehospitaldistrictname = #{leavehospitaldistrictname}
@@ -2257,9 +2209,37 @@
         </if>
     </select>
 
+
+    <select id="selectVisitCount" parameterType="com.smartor.domain.PatMedReq"
+            resultType="com.smartor.domain.PatMedRes">
+        select
+        0 AS rc,
+        count(1) AS rs
+        FROM
+        service_subtask
+        where 1=1
+        and del_flag = 0
+        and service_type=3
+        <if test="orgid != null">
+            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>
+    </select>
+
     <select id="getCurrentUserServiceSubtaskCount" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultType="map">
         SELECT
-        COUNT(CASE WHEN sendstate IN (1, 2) AND date_format(visit_time,'%y%m%d') &lt;= date_format(CURDATE(),'%y%m%d') THEN 1 END) AS pendingVisitCount,
+        COUNT(CASE WHEN sendstate = 2 AND date_format(visit_time,'%y%m%d') &lt;= date_format(CURDATE(),'%y%m%d') THEN 1 END) AS pendingVisitCount,
         COUNT(CASE WHEN sendstate = 5 THEN 1 END) AS failedVisitCount,
         SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS abnormalVisitCount,
         SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS warnningVisitCount,

--
Gitblit v1.9.3