| | |
| | | <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"> |
| | |
| | | <sql id="selectServiceSubtaskVo"> |
| | | select id, |
| | | hosp_type, |
| | | campusid, |
| | | task_guid, |
| | | diagname, |
| | | patfrom, |
| | |
| | | continue_count, |
| | | continue_time_next, |
| | | operation_item_id, |
| | | schedule_id, |
| | | schedule_detail_id, |
| | | schedule_seq, |
| | | loop_count, |
| | | task_situation |
| | | from service_subtask |
| | | </sql> |
| | |
| | | <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> |
| | | |
| | |
| | | <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> |
| | |
| | | <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> |
| | | |
| | |
| | | <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> |
| | |
| | | orgid, |
| | | drcode, |
| | | drname, |
| | | management_doctor_code, |
| | | management_doctor, |
| | | leavehospitaldistrictcode, |
| | | leavehospitaldistrictname, |
| | | deptcode, |
| | |
| | | <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> |
| | |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="gethelibraryCountHyperlink" parameterType="com.smartor.domain.ServiceSubtaskCountReq" |
| | | <!-- 任务组(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" |
| | | resultMap="ServiceSubtaskResult"> |
| | | select id, |
| | | visit_count, |
| | |
| | | <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 |