From 9bd00d48acd7b80468b7eca0f6d8ec03a82191a9 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 04 八月 2026 15:03:46 +0800
Subject: [PATCH] 【景宁】随访及时率加上补偿时间计算
---
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 110 ++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 72 insertions(+), 38 deletions(-)
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 6982d8f..4db0375 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="campusid" column="campusid"/>
</resultMap>
<resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -151,6 +152,7 @@
<sql id="selectServiceSubtaskVo">
select id,
hosp_type,
+ campusid,
task_guid,
diagname,
patfrom,
@@ -363,7 +365,7 @@
#{state}
</foreach>
</if>
- <if test="subIdList != null and sendstates.size() > 0">
+ <if test="subIdList != null and subIdList.size() > 0">
AND id IN
<foreach collection="subIdList" item="subId" open="(" separator="," close=")">
#{subId}
@@ -393,7 +395,6 @@
<if test="endSendDateTime != null">
AND date_format(visit_time,'%y%m%d') <= date_format(#{endSendDateTime},'%y%m%d')
</if>
-
<if test="longSendTime != null">
AND date_format(long_send_time,'%y%m%d') <= date_format(#{longSendTime},'%y%m%d')
</if>
@@ -430,7 +431,8 @@
close=")">
#{leaveldeptcode}
</foreach>
- </if>)
+ </if>
+ )
</if>
<if test="deptOrDistrict==3">
AND (1=1
@@ -451,7 +453,6 @@
</if>
)
</if>
-
<if test="deptOrDistrict==4">
AND (1=1
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
@@ -471,7 +472,6 @@
</if>
)
</if>
-
<if test="visitTime != null">
AND date_format(visit_time,'%y%m%d') = date_format(#{visitTime},'%y%m%d')
</if>
@@ -488,6 +488,7 @@
<if test="isupload != null ">and isupload = #{isupload}</if>
<if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
<if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
+ <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
<if test="pid != null ">and pid = #{pid}</if>
<if test="preachform != null ">and preachform = #{preachform}</if>
<if test="currentPreachform != null ">and current_preachform = #{currentPreachform}</if>
@@ -502,7 +503,6 @@
<if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
<if test="libtemplatename != null ">and libtemplatename = #{libtemplatename}</if>
<if test="openid != null ">and openid = #{openid}</if>
- <if test="longSendTime != null ">and long_send_time = #{longSendTime}</if>
<if test="sendstate != null ">and sendstate = #{sendstate}</if>
<if test="drname != null and drname != ''">and drname like concat('%', #{drname}, '%')</if>
<if test="taskName != null and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
@@ -758,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>
@@ -971,6 +984,7 @@
<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>
@@ -1067,6 +1081,7 @@
<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>
@@ -1168,6 +1183,7 @@
<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>
@@ -1372,7 +1388,13 @@
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
</trim>
- where patid = #{patid} and taskid = #{taskid}
+ where
+ <if test="patid != null ">
+ patid = #{patid}
+ </if>
+ <if test="taskid != null ">
+ and taskid = #{taskid}
+ </if>
<if test="id != null ">
and id = #{id}
</if>
@@ -1500,6 +1522,8 @@
orgid,
drcode,
drname,
+ management_doctor_code,
+ management_doctor,
leavehospitaldistrictcode,
leavehospitaldistrictname,
deptcode,
@@ -2522,14 +2546,15 @@
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 = 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
FROM service_subtask
- where 1=1
- and del_flag = 0
+ where del_flag = 0
+ <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
<if test="sendname != null and sendname != ''">
AND sendname LIKE CONCAT('%', #{sendname}, '%')
</if>
@@ -2685,6 +2710,9 @@
</if>
<if test="orgid != null and orgid != ''">
AND orgid = #{orgid}
+ </if>
+ <if test="campusid != null and campusid != ''">
+ AND campusid = #{campusid}
</if>
<if test="guid != null and guid != ''">
AND guid = #{guid}
@@ -2898,8 +2926,8 @@
<if test="sendstate != null">
AND sendstate = #{sendstate}
</if>
- <if test="isFinished != null and isFinished != '0'">
- 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>
@@ -2947,7 +2975,7 @@
order by schedule_seq asc, id asc
</select>
- <select id="gethelibraryCountHyperlink" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
+ <select id="gethelibraryCountHyperlink" parameterType="com.smartor.domain.VO.HeLibraryCountVO"
resultMap="ServiceSubtaskResult">
select id,
visit_count,
@@ -2994,11 +3022,11 @@
<if test="orgid != null and orgid != ''">
and orgid = #{orgid}
</if>
- <if test="sendstate != null and isFinished != '0'">
+ <if test="sendstate != null">
AND sendstate = #{sendstate}
</if>
- <if test="isFinished != null">
- 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
@@ -3059,6 +3087,12 @@
#{taskId}
</foreach>
AND s.sendstate = 6
+ <if test="startOutHospTime != null">
+ AND date_format(s.endtime,'%y%m%d') >= date_format(#{startOutHospTime},'%y%m%d')
+ </if>
+ <if test="endOutHospTime != null">
+ AND date_format(s.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d')
+ </if>
GROUP BY
t.taskid,
d.questiontext,
--
Gitblit v1.9.3