From abae517585ad7ff0038c31339d200712c9684556 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 21 八月 2026 16:07:07 +0800
Subject: [PATCH] 修改市一同步时间范围(实时前1天,补救前5天)
---
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 138 ++++++++++++++++++++++++----------------------
1 files changed, 72 insertions(+), 66 deletions(-)
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index f2a3b85..3524fef 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,
@@ -279,7 +281,6 @@
<include refid="selectServiceSubtaskVo"/>
where 1=1
and del_flag = 0
- and sendstate != 5
<if test="orgid != null and orgid != ''">
and orgid = #{orgid}
</if>
@@ -289,26 +290,6 @@
<if test="taskid != null ">and taskid = #{taskid}</if>
<if test="visitTime != null">
AND date_format(visit_time,'%y%m%d') <= date_format(#{visitTime},'%y%m%d')
- </if>
- <if test="sendstate != null ">and sendstate = #{sendstate}</if>
- <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
- <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
- <if test="continueCount != null ">and continue_count = #{continueCount}</if>
- <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
- UNION ALL
- <include refid="selectServiceSubtaskVo"/>
- where 1=1
- and del_flag = 0
- and sendstate = 5
- <if test="orgid != null and orgid != ''">
- and orgid = #{orgid}
- </if>
- <if test="subId != null">
- AND id = #{subId}
- </if>
- <if test="taskid != null ">and taskid = #{taskid}</if>
- <if test="visitTime != null">
- AND date_format(visit_time,'%y%m%d') <= date_format(DATE_ADD(#{visitTime}, INTERVAL 1 DAY),'%y%m%d')
</if>
<if test="sendstate != null ">and sendstate = #{sendstate}</if>
<if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
@@ -525,10 +506,10 @@
<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
- <foreach collection="visitDeptCodes" item="visitDeptCodes" open="("
+ <foreach collection="visitDeptCodes" item="visitDeptCode" open="("
separator=","
close=")">
- #{visitDeptCodes}
+ #{visitDeptCode}
</foreach>
</if>
<if test="sort != null and sort==0">order by endtime asc</if>
@@ -756,57 +737,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>
@@ -969,6 +963,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>
@@ -1065,6 +1060,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>
@@ -1166,6 +1162,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>
@@ -1370,16 +1367,17 @@
<if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
<if test="continueContent != null ">continue_content = #{continueContent},</if>
</trim>
- where
- <if test="patid != null ">
- patid = #{patid}
- </if>
- <if test="taskid != null ">
- and taskid = #{taskid}
- </if>
- <if test="id != null ">
- and id = #{id}
- </if>
+ <where>
+ <if test="patid != null ">
+ patid = #{patid}
+ </if>
+ <if test="taskid != null ">
+ and taskid = #{taskid}
+ </if>
+ <if test="id != null ">
+ and id = #{id}
+ </if>
+ </where>
</update>
<update id="updateServiceSubtaskByTaskGuid" parameterType="com.smartor.domain.ServiceSubtask">
@@ -1504,6 +1502,8 @@
orgid,
drcode,
drname,
+ management_doctor_code,
+ management_doctor,
leavehospitaldistrictcode,
leavehospitaldistrictname,
deptcode,
@@ -1817,7 +1817,8 @@
continue_content,
continue_count,
continue_time_next,
- task_situation
+ task_situation,
+ remark
from service_subtask
where 1=1
and del_flag = 0
@@ -2559,8 +2560,9 @@
</if>
</if>
<if test="deptOrDistrict==2">
+ AND (1=1
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND (leavehospitaldistrictcode IN
+ AND leavehospitaldistrictcode IN
<foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
separator=","
close=")">
@@ -2570,17 +2572,18 @@
<if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
OR deptcode IN
<foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
- close="))">
+ close=")">
#{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="("
+ <foreach collection="visitDeptCodes" item="visitDeptCode" open="("
separator=","
close=")">
- #{visitDeptCodes}
+ #{visitDeptCode}
</foreach>
</if>
<if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''">
@@ -2906,8 +2909,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>
@@ -2955,7 +2958,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,7 +2997,8 @@
continue_content,
continue_count,
continue_time_next,
- task_situation
+ task_situation,
+ remark
from service_subtask
where 1=1
and del_flag = 0
@@ -3005,8 +3009,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
@@ -3058,6 +3062,7 @@
#{taskId}
</foreach>
and s.sendstate=6
+ and d.del_flag=0
GROUP BY
t.taskid,
d.questiontext
@@ -3067,6 +3072,7 @@
#{taskId}
</foreach>
AND s.sendstate = 6
+ and d.del_flag=0
<if test="startOutHospTime != null">
AND date_format(s.endtime,'%y%m%d') >= date_format(#{startOutHospTime},'%y%m%d')
</if>
--
Gitblit v1.9.3