| | |
| | | <include refid="selectServiceSubtaskVo"/> |
| | | <where> |
| | | del_flag=0 |
| | | and taskid = #{taskid} |
| | | AND sendstate IN |
| | | <foreach collection="sendstates" item="sendstate" open="(" separator="," |
| | | close=")"> |
| | | #{sendstate} |
| | | </foreach> |
| | | <if test="taskid != null ">and taskid = #{taskid}</if> |
| | | <if test="serviceType != null ">and service_type = #{serviceType}</if> |
| | | <if test="patid != null ">and patid = #{patid}</if> |
| | | <if test="sendstates!=null"> |
| | | AND sendstate IN |
| | | <foreach collection="sendstates" item="sendstate" open="(" separator="," |
| | | close=")"> |
| | | #{sendstate} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | |
| | | <if test="taskGuid != null">and task_guid = #{taskGuid}</if> |
| | | <if test="isabnormal != null">and isabnormal = #{isabnormal}</if> |
| | | <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if> |
| | | <!-- <if test="dateLimit != null and dateLimit = '1'"> and CURDATE() + 1 > long_send_time</if>--> |
| | | <!-- <if test="visitTime != null">and visit_time = #{visitTime}</if> --> |
| | | <!--<if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> |
| | | <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>--> |
| | |
| | | JOIN service_subtask b on a.taskid = b.taskid and a.pat_cycle = 0 and b.del_flag = 0 |
| | | <where>b.taskid = #{taskid} |
| | | and b.patid = #{patid} |
| | | <if test="createTime != null and createTime != ''"> |
| | | DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%') |
| | | </if> |
| | | <if test="sendstate != null ">and b.sendstate = #{sendstate}</if> |
| | | </where> |
| | | </select> |
| | |
| | | <select id="selectServiceSubtaskById" parameterType="Long" resultMap="ServiceSubtaskResult"> |
| | | <include refid="selectServiceSubtaskVo"/> |
| | | where id = #{id} |
| | | </select> |
| | | |
| | | <select id="selectServiceSubtaskByDiagname" parameterType="com.smartor.domain.ServiceSubtask" |
| | | resultMap="ServiceSubtaskResult"> |
| | | select sendstate,starttime,endtime,nurse_name,phone,sex,task_name,sendname,leavediagname,visit_time FROM |
| | | service_subtask WHERE del_flag=0 |
| | | <if test="leavediagname != null">and leavediagname like concat('%',#{leavediagname}, '%')</if> |
| | | <if test="sendname != null">and sendname like concat('%',#{sendname}, '%')</if> |
| | | <if test="taskName != null">and task_name like concat('%',#{taskName}, '%')</if> |
| | | <if test="sendstate != null">and sendstate = #{sendstate}</if> |
| | | <if test="orgid != null">and orgid =#{orgid}</if> |
| | | GROUP BY sendname,sendstate,starttime,endtime,nurse_name,phone,sex,task_name,leavediagname,visit_time ORDER BY |
| | | visit_time |
| | | <if test="pageSize != null and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if> |
| | | </select> |
| | | |
| | | <insert id="insertServiceSubtask" parameterType="com.smartor.domain.ServiceSubtask" useGeneratedKeys="true" |
| | |
| | | SUM(pmiCount) AS pmiCount, |
| | | SUM(pmoCount) AS pmoCount |
| | | FROM ( |
| | | -- 随访数据 |
| | | SELECT |
| | | <choose> |
| | | <when test="timeType == 'day'"> |
| | |
| | | ORDER BY timePeriod DESC |
| | | </select> |
| | | |
| | | <!-- 优化的统计查询:直接在数据库层完成聚合计算 --> |
| | | <select id="countByCondition" parameterType="com.smartor.domain.ServiceSubtaskVO" resultType="map"> |
| | | SELECT |
| | | -- 未执行数量 (sendstate = 4) |
| | | SUM(CASE WHEN sendstate = 4 THEN 1 ELSE 0 END) AS wzx, |
| | | |
| | | -- 已随访数量 (sendstate != 4 AND sendstate != 2) |
| | | SUM(CASE WHEN sendstate != 4 AND sendstate != 2 THEN 1 ELSE 0 END) AS ysf, |
| | | |
| | | -- 发送失败数量 (sendstate = 5) |
| | | SUM(CASE WHEN sendstate = 5 THEN 1 ELSE 0 END) AS fssb, |
| | | |
| | | -- 已发送数量 (sendstate >= 3 OR sendstate = 1) |
| | | SUM(CASE WHEN sendstate >= 3 OR sendstate = 1 THEN 1 ELSE 0 END) AS yfs, |
| | | |
| | | -- 待随访数量 (sendstate = 2) |
| | | SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS dsf, |
| | | |
| | | -- 不理睬数量 (sendstate = 1) |
| | | SUM(CASE WHEN sendstate = 1 THEN 1 ELSE 0 END) AS blq, |
| | | |
| | | -- 异常数量 (excep IS NOT NULL AND excep != '0') |
| | | SUM(CASE WHEN excep IS NOT NULL AND excep != '0' THEN 1 ELSE 0 END) AS yc |
| | | FROM service_subtask |
| | | <where> |
| | | del_flag = 0 |
| | | <if test="sendname != null and sendname != ''"> |
| | | AND sendname LIKE CONCAT('%', #{sendname}, '%') |
| | | </if> |
| | | <if test="phone != null and phone != ''"> |
| | | AND phone = #{phone} |
| | | </if> |
| | | <if test="leavehospitaldistrictcode != null and leavehospitaldistrictcode != ''"> |
| | | AND leavehospitaldistrictcode = #{leavehospitaldistrictcode} |
| | | </if> |
| | | <if test="leavehospitaldistrictname != null and leavehospitaldistrictname != ''"> |
| | | AND leavehospitaldistrictname = #{leavehospitaldistrictname} |
| | | </if> |
| | | <if test="leavediagname != null and leavediagname != ''"> |
| | | AND leavediagname LIKE CONCAT('%', #{leavediagname}, '%') |
| | | </if> |
| | | <if test="managementDoctor != null and managementDoctor != ''"> |
| | | AND management_doctor LIKE CONCAT('%', #{managementDoctor}, '%') |
| | | </if> |
| | | <if test="sex != null and sex != ''"> |
| | | AND sex = #{sex} |
| | | </if> |
| | | <if test="age != null"> |
| | | AND age = #{age} |
| | | </if> |
| | | <if test="patguid != null"> |
| | | AND patguid = #{patguid} |
| | | </if> |
| | | <if test="subId != null"> |
| | | AND id = #{subId} |
| | | </if> |
| | | <if test="inhospid != null"> |
| | | AND inhospid = #{inhospid} |
| | | </if> |
| | | <if test="managementDoctorCode != null"> |
| | | AND management_doctor_code = #{managementDoctorCode} |
| | | </if> |
| | | <if test="submit != null"> |
| | | AND submit = #{submit} |
| | | </if> |
| | | <if test="upid != null"> |
| | | AND upid = #{upid} |
| | | </if> |
| | | <if test="patfrom != null"> |
| | | AND patfrom = #{patfrom} |
| | | </if> |
| | | <if test="serviceType != null"> |
| | | AND service_type = #{serviceType} |
| | | </if> |
| | | <if test="patid != null"> |
| | | AND patid = #{patid} |
| | | </if> |
| | | <if test="sfzh != null and sfzh != ''"> |
| | | AND sfzh = #{sfzh} |
| | | </if> |
| | | <if test="addr != null and addr != ''"> |
| | | AND addr = #{addr} |
| | | </if> |
| | | <if test="senderdetail != null and senderdetail != ''"> |
| | | AND senderdetail = #{senderdetail} |
| | | </if> |
| | | <if test="type != null and type != ''"> |
| | | AND type = #{type} |
| | | </if> |
| | | <if test="taskid != null"> |
| | | AND taskid = #{taskid} |
| | | </if> |
| | | <if test="templateid != null and templateid != ''"> |
| | | AND templateid = #{templateid} |
| | | </if> |
| | | <if test="templatename != null and templatename != ''"> |
| | | AND templatename LIKE CONCAT('%', #{templatename}, '%') |
| | | </if> |
| | | <if test="startOutHospTime != null"> |
| | | AND DATE_FORMAT(endtime,'%y%m%d') >= DATE_FORMAT(#{startOutHospTime},'%y%m%d') |
| | | </if> |
| | | <if test="endOutHospTime != null"> |
| | | AND DATE_FORMAT(endtime,'%y%m%d') <= DATE_FORMAT(#{endOutHospTime},'%y%m%d') |
| | | </if> |
| | | <if test="startSendDateTime != null"> |
| | | AND DATE_FORMAT(long_send_time,'%y%m%d') >= DATE_FORMAT(#{startSendDateTime},'%y%m%d') |
| | | </if> |
| | | <if test="endSendDateTime != null"> |
| | | AND DATE_FORMAT(long_send_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> |
| | | <if test="deptOrDistrict == 1"> |
| | | <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> |
| | | AND leavehospitaldistrictcode IN |
| | | <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> |
| | | #{leavehospitaldistrictcode} |
| | | </foreach> |
| | | </if> |
| | | <if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0"> |
| | | AND deptcode IN |
| | | <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> |
| | | #{leaveldeptcode} |
| | | </foreach> |
| | | </if> |
| | | </if> |
| | | <if test="deptcode != null and deptcode != ''"> |
| | | AND deptcode = #{deptcode} |
| | | </if> |
| | | <if test="sendstate != null"> |
| | | AND sendstate = #{sendstate} |
| | | </if> |
| | | <if test="sendstates != null and sendstates.size() > 0"> |
| | | AND sendstate IN |
| | | <foreach collection="sendstates" item="state" open="(" separator="," close=")"> |
| | | #{state} |
| | | </foreach> |
| | | </if> |
| | | <if test="orgid != null and orgid != ''"> |
| | | AND orgid = #{orgid} |
| | | </if> |
| | | <if test="guid != null and guid != ''"> |
| | | AND guid = #{guid} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | </mapper> |