From 620f2e358bd945cf336f6cf7dd2429290dd34b76 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 12 六月 2026 17:28:25 +0800
Subject: [PATCH] 【市一】手术随访 多选手术等级 配置科室

---
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index effc758..d5b5673 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -52,6 +52,7 @@
         <result property="wechat" column="wechat"/>
         <result property="leaveicd10code" column="leaveicd10code"/>
         <result property="leavediagname" column="leavediagname"/>
+        <result property="diagname" column="diagname"/>
         <result property="deptname" column="deptname"/>
         <result property="admindate" column="admindate"/>
         <result property="roomno" column="roomno"/>
@@ -122,6 +123,9 @@
     </resultMap>
 
     <resultMap type="com.smartor.domain.ServiceSubtaskStatistic" id="ServiceSubtaskStatisticResult">
+        <result property="taskName" column="task_name"/>
+        <result property="drcode" column="drcode"/>
+        <result property="drname" column="drname"/>
         <result property="dischargeCount" column="discharge_count"/>
         <result property="nonFollowUp" column="non_follow_up"/>
         <result property="filterCount" column="filter_count"/>
@@ -144,6 +148,7 @@
         select id,
                hosp_type,
                task_guid,
+               diagname,
                patfrom,
                management_doctor,
                management_doctor_code,
@@ -1508,6 +1513,13 @@
     <select id="getSpecialSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
             resultMap="ServiceSubtaskStatisticResult">
         select
+        <if test="groupKey != null and groupKey == 'task_name'">
+            a.task_name,
+        </if>
+        <if test="groupKey != null and groupKey == 'drcode'">
+            b.drcode,
+            b.drname,
+        </if>
         COUNT(1) AS discharge_count,
         SUM(CASE WHEN b.sendstate = 4 THEN 1 ELSE 0 END) AS non_follow_up,
         SUM(CASE WHEN b.sendstate = 4 and b.task_situation = 6 THEN 1 ELSE 0 END) AS filter_count,
@@ -1542,6 +1554,27 @@
         </if>
         <if test="diagType != null and diagType != ''">
             and a.diag_type = #{diagType}
+        </if>
+        <if test="taskIds != null and taskIds.size() > 0">
+            AND a.task_id IN
+            <foreach collection="taskIds" item="taskIdItem" open="(" separator=","
+                     close=")">
+                #{taskIdItem}
+            </foreach>
+        </if>
+        <if test="taskNames != null and taskNames.size() > 0">
+            AND a.task_name IN
+            <foreach collection="taskNames" item="taskNameItem" open="(" separator=","
+                     close=")">
+                #{taskNameItem}
+            </foreach>
+        </if>
+        <if test="diagTypes != null and diagTypes.size() > 0">
+            AND a.diag_type IN
+            <foreach collection="diagTypes" item="diagTypeItem" open="(" separator=","
+                     close=")">
+                #{diagTypeItem}
+            </foreach>
         </if>
         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
             AND b.leavehospitaldistrictcode IN
@@ -1585,8 +1618,11 @@
         <if test="visitCount != null and visitCount > 1">
             AND b.visit_count > 1
         </if>
-        <if test="groupKey != null and groupKey != ''">
-            GROUP BY ${groupKey}
+        <if test="groupKey != null and groupKey == 'task_name'">
+            GROUP BY a.task_name
+        </if>
+        <if test="groupKey != null and groupKey == 'drcode'">
+            GROUP BY b.drcode, b.drname
         </if>
     </select>
 
@@ -2323,7 +2359,6 @@
             AND endtime >= #{startDate}
             AND endtime &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
         </if>
-        AND service_type IN (2, 13)
         AND inhospstate=1
         <if test="orgid != null">
             AND orgid = #{orgid}
@@ -2397,8 +2432,11 @@
         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 sendstate = 4 THEN 1 ELSE 0 END) AS wxsf,
+        SUM(CASE WHEN sendstate != 4 THEN 1 ELSE 0 END) AS xsf,
+        SUM(CASE WHEN (sendstate = 1 OR sendstate = 2 OR sendstate = 3 OR sendstate = 5 OR sendstate = 7 ) THEN 1 ELSE 0 END) AS dsf,
+        SUM(CASE WHEN sendstate = 6 THEN 1 ELSE 0 END) AS ywc,
         SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS yc,
         SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS jg,
         COUNT(1) as total

--
Gitblit v1.9.3