From a03671b4fa1ce464f66fbbc1876627e3d13b0f9d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 22 九月 2026 15:03:27 +0800
Subject: [PATCH] 1.出入院查询接口,新增床号排序

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

diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 4a23796..1603d17 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -98,6 +98,7 @@
         <result property="scheduleDetailId" column="schedule_detail_id"/>
         <result property="scheduleSeq" column="schedule_seq"/>
         <result property="loopCount" column="loop_count"/>
+        <result property="isManuallyCalled" column="is_manually_called"/>
         <result property="campusid" column="campusid"/>
     </resultMap>
 
@@ -245,7 +246,8 @@
                schedule_detail_id,
                schedule_seq,
                loop_count,
-               task_situation
+               task_situation,
+               is_manually_called
         from service_subtask
     </sql>
 
@@ -513,6 +515,7 @@
         <if test="createBy != null">and create_by = #{createBy}</if>
         <if test="taskGuid != null">and task_guid = #{taskGuid}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+        <if test="isManuallyCalled != null">and is_manually_called = #{isManuallyCalled}</if>
         <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if>
         <if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0">
             AND visit_dept_code IN
@@ -976,6 +979,7 @@
             <if test="scheduleDetailId != null ">schedule_detail_id,</if>
             <if test="scheduleSeq != null ">schedule_seq,</if>
             <if test="loopCount != null ">loop_count,</if>
+            <if test="isManuallyCalled != null ">is_manually_called,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sendname != null">#{sendname},</if>
@@ -1073,6 +1077,7 @@
             <if test="scheduleDetailId != null ">#{scheduleDetailId},</if>
             <if test="scheduleSeq != null ">#{scheduleSeq},</if>
             <if test="loopCount != null ">#{loopCount},</if>
+            <if test="isManuallyCalled != null ">#{isManuallyCalled},</if>
         </trim>
     </insert>
 
@@ -1175,6 +1180,7 @@
             <if test="scheduleDetailId != null ">schedule_detail_id = #{scheduleDetailId},</if>
             <if test="scheduleSeq != null ">schedule_seq = #{scheduleSeq},</if>
             <if test="loopCount != null ">loop_count = #{loopCount},</if>
+            <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
         </trim>
         where id = #{id}
     </update>
@@ -1273,6 +1279,7 @@
             <if test="continueCount != null ">continue_count = #{continueCount},</if>
             <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
             <if test="continueContent != null ">continue_content = #{continueContent},</if>
+            <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
         </trim>
         where 1=1
         <if test="patid != null ">and patid = #{patid}</if>
@@ -1375,6 +1382,7 @@
             <if test="continueCount != null ">continue_count = #{continueCount},</if>
             <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
             <if test="continueContent != null ">continue_content = #{continueContent},</if>
+            <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
         </trim>
         <where>
             <if test="patid != null ">
@@ -1485,6 +1493,7 @@
             <if test="continueCount != null ">continue_count = #{continueCount},</if>
             <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
             <if test="continueContent != null ">continue_content = #{continueContent},</if>
+            <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
         </trim>
         where task_guid = #{taskGuid} and task_name = #{taskName}
     </update>
@@ -3027,7 +3036,7 @@
                ROUND(avg(d.score), 2) AS totalScore
         FROM service_subtask_detail d
                  JOIN service_task t ON d.taskid = t.taskid
-        WHERE t.service_type IN (6, 14)
+        WHERE t.service_type IN (14)
           AND t.del_flag = 0
           AND d.del_flag = 0
           AND d.create_time >= #{startFinishTime}
@@ -3320,6 +3329,14 @@
         service_task t
         INNER JOIN service_subtask s ON s.taskid = t.taskid
         INNER JOIN service_subtask_detail d ON d.sub_id = s.id
+        <!-- 鍘婚噸锛氬悓涓�瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閬垮厤閲嶇瓟/閲嶅鍥炶皟鎶婂悓涓�閬撻閲嶅璁″叆椤规暟锛堜笌 mzMydScoreRank 鍙e緞涓�鑷达級 -->
+        AND d.id = (
+        SELECT MAX(d2.id)
+        FROM service_subtask_detail d2
+        WHERE d2.sub_id = d.sub_id
+        AND d2.questiontext &lt;=&gt; d.questiontext
+        AND d2.del_flag = '0'
+        )
         INNER JOIN (
         SELECT
         d.questiontext,
@@ -3328,6 +3345,14 @@
         service_task t
         INNER JOIN service_subtask s ON s.taskid = t.taskid
         INNER JOIN service_subtask_detail d ON d.sub_id = s.id
+        <!-- 鍘婚噸锛氬垎姣嶏紙璇ラ鏈夋晥绛斿嵎鎬绘暟锛変笌鏄庣粏鍙e緞淇濇寔涓�鑷达紝淇濊瘉鍚勯�夐」姣斾緥鍚堣 100% -->
+        AND d.id = (
+        SELECT MAX(d4.id)
+        FROM service_subtask_detail d4
+        WHERE d4.sub_id = d.sub_id
+        AND d4.questiontext &lt;=&gt; d.questiontext
+        AND d4.del_flag = '0'
+        )
         WHERE 1=1
         <if test="subtaskIds != null and subtaskIds.size() > 0">
             AND s.id IN
@@ -3336,16 +3361,37 @@
             </foreach>
         </if>
         <if test="valueType != null">AND d.value_type &gt;= #{valueType}</if>
-        <if test="scoreStart != null">AND d.score = #{scoreStart}</if>
+        <if test="scoreStart != null">AND d.score &gt;= #{scoreStart}</if>
         <if test="scoreEnd != null">AND d.score &lt;= #{scoreEnd}</if>
         <if test="questiontext != null  and questiontext != ''">and d.questiontext like concat('%', #{questiontext},
             '%')
         </if>
         AND s.sendstate = 6
         AND d.del_flag=0
+        <!-- 鍒嗘瘝涓庢槑缁嗙敤鍚屼竴濂楁椂闂存潯浠讹紝鍚﹀垯閫変簡鏃ユ湡鍖洪棿鍚庡悇閫夐」姣斾緥鍚堣涓嶅埌 100% -->
+        <if test="startOutHospTime != null">
+            AND date_format(s.endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
+        </if>
+        <if test="endOutHospTime != null">
+            AND date_format(s.endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')
+        </if>
+        <if test="startFinishTime != null">
+            AND date_format(s.finishtime,'%y%m%d') &gt;= date_format(#{startFinishTime},'%y%m%d')
+        </if>
+        <if test="endFinishTime != null">
+            AND date_format(s.finishtime,'%y%m%d') &lt;= date_format(#{endFinishTime},'%y%m%d')
+        </if>
         GROUP BY d.questiontext
         ) t2 ON t2.questiontext = d.questiontext
         WHERE 1=1
+        <!-- 鍘婚噸锛氭槑缁嗚鍚屼竴瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閲嶇瓟涓嶉噸澶嶈鍏ラ」鏁� -->
+        AND d.id = (
+        SELECT MAX(d3.id)
+        FROM service_subtask_detail d3
+        WHERE d3.sub_id = d.sub_id
+        AND d3.questiontext &lt;=&gt; d.questiontext
+        AND d3.del_flag = '0'
+        )
         <if test="subtaskIds != null and subtaskIds.size() > 0">
             AND s.id IN
             <foreach collection="subtaskIds" item="subtaskId" open="(" separator="," close=")">
@@ -3484,7 +3530,13 @@
         WHERE s.del_flag = '0'
         AND d.del_flag = '0'
         AND s.sendstate = 6
-        AND s.service_type = #{serviceType}
+        <if test="serviceTypes != null and serviceTypes.size() > 0">
+            AND service_type IN
+            <foreach collection="serviceTypes" item="serviceType" open="(" separator=","
+                     close=")">
+                #{serviceType}
+            </foreach>
+        </if>
 <!--        &lt;!&ndash; 鍙彇鍏紡閲岀殑浜旀。鏉冮噸锛岀┖鍊�/0/鏈瓟绛夋棦涓嶈繘鍒嗗瓙涔熶笉杩涘垎姣� &ndash;&gt;-->
 <!--        AND CAST(d.score AS DECIMAL(10,4)) IN (1, 0.8, 0.6, 0.4, 0.2)-->
         <!-- 鍚屼竴瀛愪换鍔″悓涓�棰樼洰鍙繚鐣欐渶鏂颁竴鏉★紝閬垮厤閲嶇瓟琚噸澶嶈鍏ラ」鏁� -->
@@ -3507,6 +3559,9 @@
         <if test="endFinishTime != null">
             AND s.finishtime &lt; DATE_ADD(#{endFinishTime}, INTERVAL 1 DAY)
         </if>
+        <if test="questionText != null  and questionText != ''">and d.questiontext like concat('%', #{questionText},
+            '%')
+        </if>
         <choose>
             <when test='dimensionType == "2"'>
                 AND s.leavehospitaldistrictcode IS NOT NULL AND s.leavehospitaldistrictcode &lt;&gt; ''

--
Gitblit v1.9.3