| | |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double"> |
| | | <!-- 原有查询,性能差 --> |
| | | <select id="selectTimelyRateOld" parameterType="com.smartor.domain.ServiceSubtask" resultType="double"> |
| | | SELECT sum( a.finished )/ sum( 1 ) FROM |
| | | (SELECT id, visit_time, finishtime, |
| | | (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' )< DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), finishtime |
| | |
| | | <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> |
| | | <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if> |
| | | ) a |
| | | </select> |
| | | |
| | | <!-- 优化后的及时率查询:直接在 WHERE 中计算,避免子查询 --> |
| | | <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double"> |
| | | SELECT |
| | | SUM(CASE WHEN DATE(visit_time) < DATE(COALESCE(finishtime, NOW())) THEN 1 ELSE 0 END) / COUNT(*) |
| | | FROM service_subtask |
| | | WHERE del_flag=0 |
| | | <if test="starttime == null and endtime==null"> |
| | | AND visit_time < NOW() |
| | | </if> |
| | | <if test="starttime != null and endtime!=null"> |
| | | <!-- 优化:使用日期范围查询替代 date_format --> |
| | | AND visit_time >= #{starttime} |
| | | AND 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="drcode != null and drcode != ''">AND drcode = #{drcode}</if> |
| | | <if test="deptname != null and deptname != ''">AND deptname = #{deptname}</if> |
| | | <if test="isabnormal != null">AND isabnormal = #{isabnormal}</if> |
| | | <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''"> |
| | | AND leavehospitaldistrictcode = #{leavehospitaldistrictcode} |
| | | </if> |
| | | <if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''"> |
| | | AND leavehospitaldistrictname = #{leavehospitaldistrictname} |
| | | </if> |
| | | <if test="managementDoctorCode != null">AND management_doctor_code = #{managementDoctorCode}</if> |
| | | <if test="managementDoctor != null">AND management_doctor LIKE CONCAT('%',#{managementDoctor}, '%')</if> |
| | | </select> |
| | | |
| | | <select id="selectTimelyRateDetail" parameterType="com.smartor.domain.ServiceSubtask" |
| | |
| | | </update> |
| | | |
| | | |
| | | <select id="getSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq" |
| | | <select id="getSfStatisticsOld" parameterType="com.smartor.domain.ServiceSubtaskCountReq" |
| | | resultMap="ServiceSubtaskResult"> |
| | | <include refid="selectServiceSubtaskVo"/> |
| | | <where> |
| | |
| | | </select> |
| | | |
| | | <!-- 优化后的查询:减少返回字段,优化日期查询,避免 date_format --> |
| | | <select id="getSfStatistics1" parameterType="com.smartor.domain.ServiceSubtaskCountReq" |
| | | <select id="getSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq" |
| | | resultMap="ServiceSubtaskResult"> |
| | | SELECT |
| | | id, |