|  |  | 
 |  |  |         <result property="sendstate" column="sendstate"/> | 
 |  |  |         <result property="inhospid" column="inhospid"/> | 
 |  |  |         <result property="patfrom" column="patfrom"/> | 
 |  |  |         <result property="patguid" column="patguid"/> | 
 |  |  |         <result property="visitCount" column="visit_count"/> | 
 |  |  |         <result property="isVisitAgain" column="is_visit_again"/> | 
 |  |  |         <result property="upid" column="upid"/> | 
 |  |  |         <result property="visitTime" column="visit_time"/> | 
 |  |  |         <result property="visitDeptName" column="visit_dept_name"/> | 
 |  |  |         <result property="visitDeptCode" column="visit_dept_code"/> | 
 |  |  |         <result property="managementDoctor" column="management_doctor"/> | 
 |  |  |         <result property="managementDoctorCode" column="management_doctor_code"/> | 
 |  |  |     </resultMap> | 
 |  |  |  | 
 |  |  |     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2"> | 
 |  |  | 
 |  |  |                hosp_type, | 
 |  |  |                task_guid, | 
 |  |  |                patfrom, | 
 |  |  |                management_doctor, | 
 |  |  |                management_doctor_code, | 
 |  |  |                upid, | 
 |  |  |                visit_dept_name, | 
 |  |  |                visit_dept_code, | 
 |  |  |                visit_time, | 
 |  |  |                inhospid, | 
 |  |  |                visit_count, | 
 |  |  |                is_visit_again, | 
 |  |  |                patguid, | 
 |  |  |                suggest, | 
 |  |  |                sendstate, | 
 |  |  |                endtime, | 
 |  |  | 
 |  |  |                leavehospitaldistrictcode, | 
 |  |  |                leavehospitaldistrictname, | 
 |  |  |                leavediagname, | 
 |  |  |                leaveicd10code | 
 |  |  |                leaveicd10code, | 
 |  |  |                orgid, | 
 |  |  |                visit_type, | 
 |  |  |                management_doctor, | 
 |  |  |                management_doctor_code | 
 |  |  |         from service_subtask | 
 |  |  |     </sql> | 
 |  |  |  | 
 |  |  | 
 |  |  |             <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="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> | 
 |  |  |             <if test="drcode != null ">and drcode = #{drcode}</if> | 
 |  |  |             <if test="drcode != null and drcode != ''">and (drcode = #{drcode}</if> | 
 |  |  |             <if test="nurseId != null  and nurseId != ''">or nurse_id = #{nurseId})</if> | 
 |  |  |             <if test="starttime != null ">and starttime = #{starttime}</if> | 
 |  |  |             <if test="endtime != null ">and endtime = #{endtime}</if> | 
 |  |  |             <if test="excep != null ">and excep = #{excep}</if> | 
 |  |  |             <if test="nurseId != null ">and nurse_id = #{nurseId}</if> | 
 |  |  |             <if test="nurseName != null ">and nurse_name = #{nurseName}</if> | 
 |  |  |             <if test="score != null">and score = #{score}</if> | 
 |  |  |             <!--            <if test="visitCount != null">and visit_count = #{visitCount}</if>--> | 
 |  |  |             <if test="visitCount != null and visitCount == 1"> | 
 |  |  |                 AND visit_count = 1 | 
 |  |  |             </if> | 
 |  |  |             <if test="visitCount != null and visitCount > 1"> | 
 |  |  |                 AND visit_count > 1 | 
 |  |  |             </if> | 
 |  |  |             <if test="remark != null">and remark = #{remark}</if> | 
 |  |  |             <if test="suggest != null">and suggest = #{suggest}</if> | 
 |  |  |             <if test="createBy != null">and create_by = #{createBy}</if> | 
 |  |  |             <if test="taskGuid != null">and task_guid = #{taskGuid}</if> | 
 |  |  |             <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</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>--> | 
 |  |  |             <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="(" | 
 |  |  |                          separator="," | 
 |  |  |                          close=")"> | 
 |  |  |                     #{visitDeptCodes} | 
 |  |  |                 </foreach> | 
 |  |  |             </if> | 
 |  |  |         </where> | 
 |  |  |         <if test="sort != null  and sort==0">order by endtime asc</if> | 
 |  |  |         <if test="sort != null  and sort==1">order by endtime desc</if> | 
 |  |  | 
 |  |  |             <if test="createBy != null ">and create_by = #{createBy}</if> | 
 |  |  |             <if test="sendname != null ">and sendname = #{sendname}</if> | 
 |  |  |             <if test="sfzh != null ">and sfzh = #{sfzh}</if> | 
 |  |  |             <if test="patguid != null ">and patguid = #{patguid}</if> | 
 |  |  |             <if test="upid != null ">and upid = #{upid}</if> | 
 |  |  |             <if test="visitCount != null ">and visit_count = #{visitCount}</if> | 
 |  |  |             <if test="isVisitAgain != null ">and is_visit_again = #{isVisitAgain}</if> | 
 |  |  |             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> | 
 |  |  |             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> | 
 |  |  |             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if> | 
 |  |  |         </where> | 
 |  |  |  | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     <select id="selectServiceSubtaskListAgain" parameterType="com.smartor.domain.ServiceSubtaskVO" | 
 |  |  |             resultMap="ServiceSubtaskResult"> | 
 |  |  |         <include refid="selectServiceSubtaskVo"/> | 
 |  |  |         <where> | 
 |  |  |             del_flag=0 | 
 |  |  |             and upid is not null | 
 |  |  |             and visit_count > 1 | 
 |  |  |             <if test="createStartTime != null  and createEndTime != null">and create_time BETWEEN #{createStartTime} AND | 
 |  |  |                 #{createEndTime} | 
 |  |  |             </if> | 
 |  |  |             <if test="senddate != null ">and senddate = #{senddate}</if> | 
 |  |  |             <if test="senduuid != null  and senduuid != ''">and senduuid = #{senduuid}</if> | 
 |  |  |             <if test="result != null  and result != ''">and result = #{result}</if> | 
 |  |  |             <if test="finishtime != null ">and finishtime = #{finishtime}</if> | 
 |  |  |             <if test="recordid != null ">and recordid = #{recordid}</if> | 
 |  |  |             <if test="exrecallcount != null ">and exrecallcount = #{exrecallcount}</if> | 
 |  |  |             <if test="pulltime != null ">and pulltime = #{pulltime}</if> | 
 |  |  |             <if test="deptcode != null  and deptcode != ''">and deptcode = #{deptcode}</if> | 
 |  |  |             <if test="deptname != null  and deptname != ''">and deptname = #{deptname}</if> | 
 |  |  |             <if test="labelstatus != null ">and labelstatus = #{labelstatus}</if> | 
 |  |  |             <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="pid != null ">and pid = #{pid}</if> | 
 |  |  |             <if test="preachform != null ">and preachform = #{preachform}</if> | 
 |  |  |             <if test="guid != null  and guid != ''">and guid = #{guid}</if> | 
 |  |  |             <if test="textParam != null  and textParam != ''">and text_param = #{textParam}</if> | 
 |  |  |             <if test="bedNo != null">and bed_no = #{bedNo}</if> | 
 |  |  |             <if test="sendType != null  and sendType != ''">and send_type = #{sendType}</if> | 
 |  |  |             <if test="operator != null  and operator != ''">and operator = #{operator}</if> | 
 |  |  |             <if test="operatorNo != null  and operatorNo != ''">and operator_no = #{operatorNo}</if> | 
 |  |  |             <if test="wechat != null  and wechat != ''">and wechat = #{wechat}</if> | 
 |  |  |             <if test="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if> | 
 |  |  |             <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> | 
 |  |  |             <if test="drcode != null and drcode != ''">and (drcode = #{drcode}</if> | 
 |  |  |             <if test="nurseId != null  and nurseId != ''">or nurse_id = #{nurseId})</if> | 
 |  |  |             <if test="starttime != null ">and starttime = #{starttime}</if> | 
 |  |  |             <if test="endtime != null ">and endtime = #{endtime}</if> | 
 |  |  |             <if test="excep != null ">and excep = #{excep}</if> | 
 |  |  |             <if test="nurseName != null ">and nurse_name = #{nurseName}</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> | 
 |  |  |             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if> | 
 |  |  |             <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if> | 
 |  |  |         </where> | 
 |  |  |  | 
 |  |  |     </select> | 
 |  |  | 
 |  |  |                  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} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectTimelyRate" 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 | 
 |  |  |         ), '%y%m%d' ) ) | 
 |  |  |         THEN 1 ELSE 0 END ) finished,1 AS tasknumber 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"> | 
 |  |  |             AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d') | 
 |  |  |             AND date_format(visit_time,'%y%m%d') <= date_format(#{endtime},'%y%m%d') | 
 |  |  |         </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="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> | 
 |  |  |         ) a | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectTimelyRateDetail" parameterType="com.smartor.domain.ServiceSubtask" | 
 |  |  |             resultMap="ServiceSubtaskResult"> | 
 |  |  |         <include refid="selectServiceSubtaskVo"/> | 
 |  |  |         <where> | 
 |  |  |             id in ( | 
 |  |  |             SELECT id FROM | 
 |  |  |             (SELECT id, visit_time, finishtime, | 
 |  |  |             (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) < DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), | 
 |  |  |             finishtime | 
 |  |  |             ), '%y%m%d' ) ) | 
 |  |  |             THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask | 
 |  |  |             WHERE del_flag=0 | 
 |  |  |             -- AND visit_time < NOW() | 
 |  |  |             <if test="starttime != null and endtime!=null"> | 
 |  |  |                 AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d') | 
 |  |  |                 AND date_format(visit_time,'%y%m%d') <= date_format(#{endtime},'%y%m%d') | 
 |  |  |             </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="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> | 
 |  |  |             ) a where a.finished =1) | 
 |  |  |         </where> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectServiceSubtaskById" parameterType="Long" resultMap="ServiceSubtaskResult"> | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">inhospid,</if> | 
 |  |  |             <if test="patfrom != null ">patfrom,</if> | 
 |  |  |             <if test="taskGuid != null ">task_guid,</if> | 
 |  |  |             <if test="patguid != null ">patguid,</if> | 
 |  |  |             <if test="visitCount != null ">visit_count,</if> | 
 |  |  |             <if test="isVisitAgain != null ">is_visit_again,</if> | 
 |  |  |             <if test="upid != null ">upid,</if> | 
 |  |  |             <if test="visitTime != null ">visit_Time,</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code,</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name,</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code,</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor,</if> | 
 |  |  |         </trim> | 
 |  |  |         <trim prefix="values (" suffix=")" suffixOverrides=","> | 
 |  |  |             <if test="sendname != null">#{sendname},</if> | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">#{inhospid},</if> | 
 |  |  |             <if test="patfrom != null ">#{patfrom},</if> | 
 |  |  |             <if test="taskGuid != null ">#{taskGuid},</if> | 
 |  |  |             <if test="patguid != null ">#{patguid},</if> | 
 |  |  |             <if test="visitCount != null ">#{visitCount},</if> | 
 |  |  |             <if test="isVisitAgain != null ">#{isVisitAgain},</if> | 
 |  |  |             <if test="upid != null ">#{upid},</if> | 
 |  |  |             <if test="visitTime != null ">#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">#{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">#{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">#{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |     </insert> | 
 |  |  |  | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">inhospid=#{inhospid},</if> | 
 |  |  |             <if test="patfrom != null ">patfrom=#{patfrom},</if> | 
 |  |  |             <if test="taskGuid != null ">task_guid=#{taskGuid},</if> | 
 |  |  |             <if test="patguid != null ">patguid=#{patguid},</if> | 
 |  |  |             <if test="visitCount != null ">visit_count=#{visitCount},</if> | 
 |  |  |             <if test="isVisitAgain != null ">is_visit_again=#{isVisitAgain},</if> | 
 |  |  |             <if test="upid != null ">upid=#{upid},</if> | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where id = #{id} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |             <if test="sendstate != null ">sendstate = #{sendstate},</if> | 
 |  |  |             <if test="serviceType != null ">service_type = #{serviceType},</if> | 
 |  |  |             <if test="score != null ">score = #{score},</if> | 
 |  |  |             <if test="visitCount != null ">visit_count = #{visitCount},</if> | 
 |  |  |             <if test="submit != null ">submit = #{submit},</if> | 
 |  |  |             <if test="leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''">leavehospitaldistrictcode | 
 |  |  |                 = #{leavehospitaldistrictcode}, | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">inhospid=#{inhospid},</if> | 
 |  |  |             <if test="patfrom != null ">patfrom=#{patfrom},</if> | 
 |  |  |             <if test="taskGuid != null ">taskGuid=#{taskGuid},</if> | 
 |  |  |             <if test="patguid != null ">patguid=#{patguid},</if> | 
 |  |  |             <if test="isVisitAgain != null ">is_visit_again=#{isVisitAgain},</if> | 
 |  |  |             <if test="upid != null ">upid=#{upid},</if> | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         <where> | 
 |  |  |             <if test="patid != null ">and patid = #{patid}</if> | 
 |  |  | 
 |  |  |             <if test="orgid != null">orgid = #{orgid},</if> | 
 |  |  |             <if test="pid != null">pid = #{pid},</if> | 
 |  |  |             <if test="guid != null">guid = #{guid},</if> | 
 |  |  |             <if test="visitCount != null">visit_count = #{visitCount},</if> | 
 |  |  |             <if test="isVisitAgain != null">is_visit_again = #{isVisitAgain},</if> | 
 |  |  |             <if test="textParam != null">text_param = #{textParam},</if> | 
 |  |  |             <if test="preachform != null">preachform = #{preachform},</if> | 
 |  |  |             <if test="bedNo != null">bed_no = #{bedNo},</if> | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">inhospid=#{inhospid},</if> | 
 |  |  |             <if test="patfrom != null ">patfrom=#{patfrom},</if> | 
 |  |  |             <if test="taskGuid != null ">task_guid=#{taskGuid},</if> | 
 |  |  |             <if test="patguid != null ">patguid=#{patguid},</if> | 
 |  |  |             <if test="upid != null ">upid=#{upid},</if> | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where patid = #{patid} and taskid = #{taskid} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |             <if test="wechat != null  and wechat != ''">wechat = #{wechat},</if> | 
 |  |  |             <if test="roomno != null  and roomno != ''">roomno = #{roomno},</if> | 
 |  |  |             <if test="admindate != null ">admindate = #{admindate},</if> | 
 |  |  |             <if test="visitCount != null ">visit_count = #{visitCount},</if> | 
 |  |  |             <if test="isVisitAgain != null ">is_visit_again = #{isVisitAgain},</if> | 
 |  |  |             <if test="deptname != null  and deptname != ''">deptname = #{deptname},</if> | 
 |  |  |             <if test="leaveicd10code != null  and leaveicd10code != ''">leaveicd10code = #{leaveicd10code},</if> | 
 |  |  |             <if test="leavediagname != null  and leavediagname != ''">leavediagname = #{leavediagname},</if> | 
 |  |  | 
 |  |  |             <if test="inhospid != null ">inhospid=#{inhospid},</if> | 
 |  |  |             <if test="patfrom != null ">patfrom=#{patfrom},</if> | 
 |  |  |             <if test="taskGuid != null ">task_guid=#{taskGuid},</if> | 
 |  |  |             <if test="patguid != null ">patguid=#{patguid},</if> | 
 |  |  |             <if test="upid != null ">upid=#{upid},</if> | 
 |  |  |             <if test="visitTime != null ">visit_time=#{visitTime},</if> | 
 |  |  |             <if test="visitDeptCode != null">visit_dept_code = #{visitDeptCode},</if> | 
 |  |  |             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if> | 
 |  |  |             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if> | 
 |  |  |             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if> | 
 |  |  |         </trim> | 
 |  |  |         where task_guid = #{taskGuid} and task_name = #{taskName} | 
 |  |  |     </update> | 
 |  |  | 
 |  |  |                     #{leavehospitaldistrictcode} | 
 |  |  |                 </foreach> | 
 |  |  |             </if> | 
 |  |  |             <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |                 AND deptcode IN | 
 |  |  |                 <foreach collection="deptcodes" item="deptcode" open="(" separator="," | 
 |  |  |                          close=")"> | 
 |  |  |                     #{deptcode} | 
 |  |  |                 </foreach> | 
 |  |  |             </if> | 
 |  |  |             <if test="serviceType != null and serviceType.size() > 0"> | 
 |  |  |                 AND service_type IN | 
 |  |  |                 <foreach collection="serviceType" item="serviceType" open="(" separator="," | 
 |  |  | 
 |  |  |                 </foreach> | 
 |  |  |             </if> | 
 |  |  |             <if test="startTime != null and endTime!=null"> | 
 |  |  |                 AND endtime > #{startTime} | 
 |  |  |                 AND endtime <= #{endTime} | 
 |  |  |                 AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d') | 
 |  |  |                 AND date_format(visit_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') | 
 |  |  |             </if> | 
 |  |  |             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> | 
 |  |  |             <if test="visitDeptName != null">abd visit_dept_name = #{visitDeptName}</if> | 
 |  |  |         </where> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | 
 |  |  |                senderdetail, | 
 |  |  |                type, | 
 |  |  |                taskid, | 
 |  |  |                visit_time, | 
 |  |  |                templateid, | 
 |  |  |                templatename, | 
 |  |  |                senddate, | 
 |  |  | 
 |  |  |                deptcode, | 
 |  |  |                labelstatus, | 
 |  |  |                del_flag, | 
 |  |  |                upid, | 
 |  |  |                update_by, | 
 |  |  |                update_time, | 
 |  |  |                create_by, | 
 |  |  | 
 |  |  |                upload_time, | 
 |  |  |                orgid, | 
 |  |  |                pid, | 
 |  |  |                visit_count, | 
 |  |  |                is_visit_again, | 
 |  |  |                guid, | 
 |  |  |                text_param, | 
 |  |  |                preachform, | 
 |  |  | 
 |  |  |                patfrom, | 
 |  |  |                task_guid, | 
 |  |  |                leavediagname, | 
 |  |  |                patguid, | 
 |  |  |                visitDeptCode, | 
 |  |  |                visitDeptName, | 
 |  |  |                management_doctor_code, | 
 |  |  |                management_doctor, | 
 |  |  |                leaveicd10code | 
 |  |  |         FROM service_subtask, | 
 |  |  |              JSON_TABLE(send_time_slot, '$[*]' COLUMNS ( | 
 |  |  | 
 |  |  |             month, st.service_type, st.id; | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="getDeptRanking" parameterType="com.smartor.domain.PatMedReq" resultType="com.smartor.domain.PatMedRes"> | 
 |  |  |         SELECT deptname, | 
 |  |  |                count(1) AS rc | 
 |  |  |         FROM service_subtask | 
 |  |  |         WHERE DATE_FORMAT(finishtime, '%Y-%m-%d') >= #{startDate} | 
 |  |  |           AND DATE_FORMAT(finishtime, '%Y-%m-%d') <= #{endDate} | 
 |  |  |         GROUP BY deptname | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!-- 服务统计查询 - 按时间维度统计出院/门诊随访数据 --> | 
 |  |  |     <select id="getServiceStatistics" parameterType="com.smartor.domain.ServiceStatisticsRequest" | 
 |  |  |             resultType="com.smartor.domain.ServiceStatisticsResponse"> | 
 |  |  |         SELECT | 
 |  |  |         timePeriod, | 
 |  |  |         SUM(dischargeFollowCount) AS dischargeFollowCount, | 
 |  |  |         SUM(outpatientFollowCount) AS outpatientFollowCount, | 
 |  |  |         SUM(pmiCount) AS pmiCount, | 
 |  |  |         SUM(pmoCount) AS pmoCount | 
 |  |  |         FROM ( | 
 |  |  |         -- 随访数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         COUNT(CASE WHEN service_type = '2' THEN 1 END) AS dischargeFollowCount, | 
 |  |  |         COUNT(CASE WHEN service_type = '3' THEN 1 END) AS outpatientFollowCount, | 
 |  |  |         0 AS pmiCount, | 
 |  |  |         0 AS pmoCount | 
 |  |  |         FROM service_subtask | 
 |  |  |         WHERE | 
 |  |  |         del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(visit_time,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(visit_time,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND deptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> | 
 |  |  |             AND leavehospitaldistrictcode IN | 
 |  |  |             <foreach collection="leavehospitaldistrictcodes" item="districtcode" open="(" separator="," close=")"> | 
 |  |  |                 #{districtcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="serviceTypes != null and serviceTypes.size() > 0"> | 
 |  |  |             AND service_type IN | 
 |  |  |             <foreach collection="serviceTypes" item="serviceType" open="(" separator="," close=")"> | 
 |  |  |                 #{serviceType} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(visit_time, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |  | 
 |  |  |         UNION ALL | 
 |  |  |  | 
 |  |  |         -- 出院人次数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         0 AS dischargeFollowCount, | 
 |  |  |         0 AS outpatientFollowCount, | 
 |  |  |         COUNT( patid) AS pmiCount, | 
 |  |  |         0 AS pmoCount | 
 |  |  |         FROM pat_med_inhosp | 
 |  |  |         WHERE del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(endtime,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(endtime,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         AND inhospstate=1 | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> | 
 |  |  |             AND leavehospitaldistrictcode IN | 
 |  |  |             <foreach collection="leavehospitaldistrictcodes" item="districtcode" open="(" separator="," close=")"> | 
 |  |  |                 #{districtcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND leaveldeptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(endtime, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |  | 
 |  |  |         UNION ALL | 
 |  |  |  | 
 |  |  |         -- 门诊人次数据 | 
 |  |  |         SELECT | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y') AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod, | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod, | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         0 AS dischargeFollowCount, | 
 |  |  |         0 AS outpatientFollowCount, | 
 |  |  |         0 AS pmiCount, | 
 |  |  |         COUNT( patid) AS pmoCount | 
 |  |  |         FROM pat_med_outhosp | 
 |  |  |         WHERE del_flag = '0' | 
 |  |  |         <if test="startDate != null and endDate != null"> | 
 |  |  |             and date_format(admitdate,'%y%m%d') >= date_format(#{startDate},'%y%m%d') | 
 |  |  |             and date_format(admitdate,'%y%m%d') <= date_format(#{endDate},'%y%m%d') | 
 |  |  |         </if> | 
 |  |  |         <if test="orgid != null"> | 
 |  |  |             AND orgid = #{orgid} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         <if test="deptcodes != null and deptcodes.size() > 0"> | 
 |  |  |             AND deptcode IN | 
 |  |  |             <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> | 
 |  |  |                 #{deptcode} | 
 |  |  |             </foreach> | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |         GROUP BY | 
 |  |  |         <choose> | 
 |  |  |             <when test="timeType == 'day'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'month'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'year'"> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y') | 
 |  |  |             </when> | 
 |  |  |             <when test="timeType == 'week'"> | 
 |  |  |                 CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 DATE_FORMAT(admitdate, '%Y-%m-%d') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         ) AS combined_data | 
 |  |  |         GROUP BY timePeriod | 
 |  |  |         ORDER BY timePeriod DESC | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> |