From 879bc177f31717f6d4a4998840e786a668256e97 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 06 八月 2026 15:52:01 +0800
Subject: [PATCH] 【景宁】查询随访任务组科室关联列表、查询随访任务组疾病关联列表
---
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 109 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 83 insertions(+), 26 deletions(-)
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 8be95f9..4db0375 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -94,6 +94,11 @@
<result property="continueCount" column="continue_count"/>
<result property="continueTimeNext" column="continue_time_next"/>
<result property="operationItemId" column="operation_item_id"/>
+ <result property="scheduleId" column="schedule_id"/>
+ <result property="scheduleDetailId" column="schedule_detail_id"/>
+ <result property="scheduleSeq" column="schedule_seq"/>
+ <result property="loopCount" column="loop_count"/>
+ <result property="campusid" column="campusid"/>
</resultMap>
<resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -147,6 +152,7 @@
<sql id="selectServiceSubtaskVo">
select id,
hosp_type,
+ campusid,
task_guid,
diagname,
patfrom,
@@ -238,6 +244,10 @@
continue_count,
continue_time_next,
operation_item_id,
+ schedule_id,
+ schedule_detail_id,
+ schedule_seq,
+ loop_count,
task_situation
from service_subtask
</sql>
@@ -748,57 +758,70 @@
<select id="selectTimelyRateBatch" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultType="map">
SELECT
<if test="groupKey != null and groupKey != ''">
- ${groupKey} as groupKey,
+ ss.${groupKey} as groupKey,
</if>
- SUM(CASE WHEN finishtime IS NOT NULL AND DATE(visit_time) <= DATE(finishtime) THEN 1 ELSE 0 END) / COUNT(*) AS finishRate,
+ SUM(CASE WHEN ss.finishtime IS NOT NULL AND DATE(ss.visit_time) <= DATE(ss.finishtime) THEN 1 ELSE 0 END) / COUNT(*) AS finishRate,
<if test="rateDay != null">
- SUM(CASE WHEN finishtime IS NOT NULL AND DATEDIFF(finishtime, endtime) <= #{rateDay} THEN 1 ELSE 0 END) / COUNT(*) AS rate
+ SUM(CASE WHEN ss.finishtime IS NOT NULL
+ AND DATEDIFF(ss.finishtime, ss.endtime) <= #{rateDay} + COALESCE(cp.compensate_days, 0)
+ THEN 1 ELSE 0 END) / COUNT(*) AS rate
</if>
<if test="rateDay == null">
NULL AS rate
</if>
- FROM service_subtask
- WHERE del_flag = 0
- AND visit_time IS NOT NULL
+ FROM service_subtask ss
+ <if test="rateDay != null">
+ <!-- 琛ュ伩鏃堕棿锛氬厛鎸夊瓙浠诲姟鑱氬悎鎴愪竴琛屽啀鍏宠仈锛岄伩鍏嶄竴瀵瑰鏀惧ぇ COUNT(*) 鍒嗘瘝銆�
+ compensate_time 鏄� varchar 涓斿彲鑳藉瓨鎴愮┖涓诧紝闇�鍏堢疆绌哄啀杞暟瀛� -->
+ LEFT JOIN (
+ SELECT subid,
+ SUM(CAST(COALESCE(NULLIF(TRIM(compensate_time), ''), '0') AS SIGNED)) AS compensate_days
+ FROM service_subtask_preachform
+ WHERE del_flag = 0
+ GROUP BY subid
+ ) cp ON cp.subid = ss.id
+ </if>
+ WHERE ss.del_flag = 0
+ AND ss.visit_time IS NOT NULL
<if test="starttime == null and endtime==null">
- AND DATE(visit_time) < DATE(NOW())
+ AND DATE(ss.visit_time) < DATE(NOW())
</if>
<if test="starttime != null and endtime!=null">
- AND visit_time >= #{starttime}
- AND visit_time < DATE_ADD(#{endtime}, INTERVAL 1 DAY)
+ AND ss.visit_time >= #{starttime}
+ AND ss.visit_time < DATE_ADD(#{endtime}, INTERVAL 1 DAY)
</if>
- <if test="orgid != null and orgid != ''">AND orgid = #{orgid}</if>
- <if test="deptcode != null and deptcode != ''">and deptcode = #{deptcode}</if>
- <if test="deptname != null and deptname != ''">and deptname = #{deptname}</if>
- <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+ <if test="orgid != null and orgid != ''">AND ss.orgid = #{orgid}</if>
+ <if test="deptcode != null and deptcode != ''">and ss.deptcode = #{deptcode}</if>
+ <if test="deptname != null and deptname != ''">and ss.deptname = #{deptname}</if>
+ <if test="isabnormal != null">and ss.isabnormal = #{isabnormal}</if>
<if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''">and
- leavehospitaldistrictcode = #{leavehospitaldistrictcode}
+ ss.leavehospitaldistrictcode = #{leavehospitaldistrictcode}
</if>
<if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''">and
- leavehospitaldistrictname = #{leavehospitaldistrictname}
+ ss.leavehospitaldistrictname = #{leavehospitaldistrictname}
</if>
- <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
- <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
+ <if test="managementDoctorCode != null">and ss.management_doctor_code = #{managementDoctorCode}</if>
+ <if test="managementDoctor != null">and ss.management_doctor like concat('%',#{managementDoctor}, '%')</if>
<if test="visitCount != null and visitCount == 1">
- AND visit_count = 1
+ AND ss.visit_count = 1
</if>
<if test="visitCount != null and visitCount > 1">
- AND visit_count > 1
+ AND ss.visit_count > 1
</if>
<if test="serviceTypeList != null">
- AND service_type IN
+ AND ss.service_type IN
<foreach collection="serviceTypeList" item="serviceType" open="(" separator=","
close=")">
#{serviceType}
</foreach>
</if>
<if test="groupKey != null and groupKey != ''">
- AND ${groupKey} IN
+ AND ss.${groupKey} IN
<foreach collection="groupKeyList" item="key" open="(" separator=","
close=")">
#{key}
</foreach>
- GROUP BY ${groupKey}
+ GROUP BY ss.${groupKey}
</if>
</select>
@@ -961,6 +984,11 @@
<if test="continueTimeNext != null ">continue_time_next,</if>
<if test="continueContent != null ">continue_content,</if>
<if test="operationItemId != null ">operation_item_id,</if>
+ <if test="campusid != null">campusid,</if>
+ <if test="scheduleId != null ">schedule_id,</if>
+ <if test="scheduleDetailId != null ">schedule_detail_id,</if>
+ <if test="scheduleSeq != null ">schedule_seq,</if>
+ <if test="loopCount != null ">loop_count,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sendname != null">#{sendname},</if>
@@ -1053,6 +1081,11 @@
<if test="continueTimeNext != null ">#{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">#{continueContent},</if>
<if test="operationItemId != null ">#{operationItemId},</if>
+ <if test="campusid != null">#{campusid},</if>
+ <if test="scheduleId != null ">#{scheduleId},</if>
+ <if test="scheduleDetailId != null ">#{scheduleDetailId},</if>
+ <if test="scheduleSeq != null ">#{scheduleSeq},</if>
+ <if test="loopCount != null ">#{loopCount},</if>
</trim>
</insert>
@@ -1150,6 +1183,11 @@
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
<if test="operationItemId != null ">operation_item_id = #{operationItemId},</if>
+ <if test="campusid != null">campusid=#{campusid},</if>
+ <if test="scheduleId != null ">schedule_id = #{scheduleId},</if>
+ <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>
</trim>
where id = #{id}
</update>
@@ -2888,8 +2926,8 @@
<if test="sendstate != null">
AND sendstate = #{sendstate}
</if>
- <if test="isFinished != null and isFinished == '1'">
- AND finishtime is not null
+ <if test="isFinished != null and isFinished != ''">
+ and finishtime is not null
</if>
<if test="starttime != null">AND starttime >= #{starttime}</if>
<if test="endtime != null">AND endtime <= #{endtime}</if>
@@ -2916,6 +2954,25 @@
ORDER BY groupCode
</otherwise>
</choose>
+ </select>
+
+ <!-- 浠诲姟缁勶紙appltype=5锛夋粴鍔ㄨ皟搴︾敤锛氭湰杞粛鍦ㄨ窇鐨勬暟閲� -->
+ <select id="countActiveByScheduleIdAndLoop" resultType="int">
+ select count(1)
+ from service_subtask
+ where schedule_id = #{scheduleId}
+ and loop_count = #{loopCount}
+ and (del_flag is null or del_flag = '0')
+ and sendstate in (1, 2, 3)
+ </select>
+
+ <!-- 浠诲姟缁勶紙appltype=5锛夋粴鍔ㄨ皟搴︾敤锛氭媺鏈疆鍏ㄩ噺 subtask锛屼綔涓轰笅涓�杞殑鍏嬮殕妯℃澘 -->
+ <select id="selectByScheduleIdAndLoop" resultMap="ServiceSubtaskResult">
+ <include refid="selectServiceSubtaskVo"/>
+ where schedule_id = #{scheduleId}
+ and loop_count = #{loopCount}
+ and (del_flag is null or del_flag = '0')
+ order by schedule_seq asc, id asc
</select>
<select id="gethelibraryCountHyperlink" parameterType="com.smartor.domain.VO.HeLibraryCountVO"
@@ -2968,8 +3025,8 @@
<if test="sendstate != null">
AND sendstate = #{sendstate}
</if>
- <if test="isFinished != null and isFinished = '1'">
- AND finishtime is not null
+ <if test="isFinished != null and isFinished != ''">
+ and finishtime is not null
</if>
<if test="hospitaldistrictcodes != null and hospitaldistrictcodes.size() > 0">
AND leavehospitaldistrictcode IN
--
Gitblit v1.9.3