select id, hosp_type, campusid, task_guid, diagname, patfrom, management_doctor, management_doctor_code, current_preachform, upid, isabnormal, visit_dept_name, visit_dept_code, visit_time, inhospid, visit_count, is_visit_again, patguid, suggest, sendstate, endtime, nurse_id, nurse_name, starttime, submit, drname, excep, drcode, long_send_time, openid, remark, doctor_opinion, service_type, libtemplateid, libtemplatename, hospno, score, phone, sex, age, patid, sfzh, addr, senderdetail, type, taskid, templateid, templatename, senddate, senduuid, result, finishtime, finish_state, recordid, exrecallcount, pulltime, deptcode, labelstatus, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, pid, guid, text_param, preachform, bed_no, send_type, task_name, task_desc, operator_no, operator, wechat, sendname, roomno, admindate, deptname, stop_state, leavehospitaldistrictcode, leavehospitaldistrictname, leavediagname, leaveicd10code, orgid, visit_type, continue_flag, continue_time_now, continue_content, continue_count, continue_time_next, operation_item_id, schedule_id, schedule_detail_id, schedule_seq, loop_count, task_situation, is_manually_called from service_subtask CASE WHEN service_subtask.endtime IS NULL THEN finish_state WHEN COALESCE(#{finishtime,jdbcType=TIMESTAMP}, service_subtask.finishtime, NOW()) <= DATE_ADD( DATE_ADD( service_subtask.endtime, INTERVAL COALESCE((SELECT st.send_day FROM service_task st WHERE st.taskid = service_subtask.taskid AND st.del_flag = '0' LIMIT 1), 1) DAY ), INTERVAL (COALESCE((SELECT SUM(CAST(COALESCE(NULLIF(TRIM(pf.compensate_time), ''), '0') AS SIGNED)) FROM service_subtask_preachform pf WHERE pf.subid = service_subtask.id AND pf.del_flag = 0), 0) + 1) DAY ) THEN 1 WHEN COALESCE((SELECT st.delay_finish_days FROM service_task st WHERE st.taskid = service_subtask.taskid AND st.del_flag = '0' LIMIT 1), 0) > 0 AND COALESCE(#{finishtime,jdbcType=TIMESTAMP}, service_subtask.finishtime, NOW()) <= DATE_ADD( DATE_ADD( DATE_ADD( service_subtask.endtime, INTERVAL COALESCE((SELECT st.send_day FROM service_task st WHERE st.taskid = service_subtask.taskid AND st.del_flag = '0' LIMIT 1), 1) DAY ), INTERVAL (COALESCE((SELECT SUM(CAST(COALESCE(NULLIF(TRIM(pf.compensate_time), ''), '0') AS SIGNED)) FROM service_subtask_preachform pf WHERE pf.subid = service_subtask.id AND pf.del_flag = 0), 0) + 1) DAY ), INTERVAL COALESCE((SELECT st.delay_finish_days FROM service_task st WHERE st.taskid = service_subtask.taskid AND st.del_flag = '0' LIMIT 1), 0) DAY ) THEN 2 ELSE 3 END ( SELECT DATE_ADD( DATE_ADD(ss.endtime, INTERVAL COALESCE(st.send_day, 1) DAY), INTERVAL (COALESCE(pf.compensate_days, 0) + 1) DAY ) FROM service_subtask ss LEFT JOIN service_task st ON st.taskid = ss.taskid AND st.del_flag = '0' INNER 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 ) pf ON pf.subid = ss.id WHERE ss.id = service_subtask.id ) AND > NOW() AND <= DATE_ADD(NOW(), INTERVAL COALESCE(#{soonTimeoutHours}, 0) HOUR) insert into service_subtask sendname, phone, sex, age, sfzh, addr, senderdetail, type, taskid, templateid, templatename, senddate, senduuid, result, finishtime, finish_state, recordid, exrecallcount, pulltime, deptcode, labelstatus, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, campusid, pid, guid, text_param, preachform, bed_no, send_type, task_name, task_desc, operator, operator_no, hosp_type, hospno, wechat, roomno, admindate, deptname, leaveicd10code, leavediagname, libtemplateid, libtemplatename, patid, openid, long_send_time, service_type, score, submit, leavehospitaldistrictcode, leavehospitaldistrictname, drname, drcode, endtime, starttime, excep, nurse_name, nurse_id, remark, doctor_opinion, suggest, sendstate, inhospid, patfrom, task_guid, patguid, visit_count, is_visit_again, upid, visit_Time, visit_dept_code, visit_dept_name, management_doctor_code, management_doctor, current_preachform, task_situation, isabnormal, continue_flag, continue_time_now, continue_count, continue_time_next, continue_content, operation_item_id, schedule_id, schedule_detail_id, schedule_seq, loop_count, is_manually_called, #{sendname}, #{phone}, #{sex}, #{age}, #{sfzh}, #{addr}, #{senderdetail}, #{type}, #{taskid}, #{templateid}, #{templatename}, #{senddate}, #{senduuid}, #{result}, #{finishtime}, #{finishState}, #{recordid}, #{exrecallcount}, #{pulltime}, #{deptcode}, #{labelstatus}, #{updateBy}, #{updateTime}, #{createBy}, #{createTime}, #{isupload}, #{uploadTime}, #{orgid}, #{campusid}, #{pid}, #{guid}, #{textParam}, #{preachform}, #{bedNo}, #{sendType}, #{taskName}, #{taskDesc}, #{operator}, #{operatorNo}, #{hospType}, #{hospno}, #{wechat}, #{roomno}, #{admindate}, #{deptname}, #{leaveicd10code}, #{leavediagname}, #{libtemplateid}, #{libtemplatename}, #{patid}, #{openid}, #{longSendTime}, #{serviceType}, #{score}, #{submit}, #{leavehospitaldistrictcode}, #{leavehospitaldistrictname}, #{drname}, #{drcode}, #{endtime}, #{starttime}, #{excep}, #{nurseName}, #{nurseId}, #{remark}, #{doctorOpinion}, #{suggest}, #{sendstate}, #{inhospid}, #{patfrom}, #{taskGuid}, #{patguid}, #{visitCount}, #{isVisitAgain}, #{upid}, #{visitTime}, #{visitDeptCode}, #{visitDeptName}, #{managementDoctorCode}, #{managementDoctor}, #{currentPreachform}, #{taskSituation}, #{isabnormal}, #{continueFlag}, #{continueTimeNow,jdbcType=TIMESTAMP}, #{continueCount}, #{continueTimeNext,jdbcType=TIMESTAMP}, #{continueContent}, #{operationItemId}, #{scheduleId}, #{scheduleDetailId}, #{scheduleSeq}, #{loopCount}, #{isManuallyCalled}, update service_subtask set is_visit_again = #{isVisitAgain}, update_time = now() where id = #{id} and (is_visit_again is null or is_visit_again <> #{isVisitAgain}) update service_subtask sendname = #{sendname}, phone = #{phone}, sex = #{sex}, del_flag = #{delFlag}, age = #{age}, sfzh = #{sfzh}, addr = #{addr}, senderdetail = #{senderdetail}, type = #{type}, taskid = #{taskid}, templateid = #{templateid}, templatename = #{templatename}, senddate = #{senddate}, senduuid = #{senduuid}, result = #{result}, finishtime = #{finishtime}, recordid = #{recordid}, exrecallcount = #{exrecallcount}, pulltime = #{pulltime}, deptcode = #{deptcode}, labelstatus = #{labelstatus}, update_by = #{updateBy}, update_time = #{updateTime}, create_by = #{createBy}, create_time = #{createTime}, isupload = #{isupload}, upload_time = #{uploadTime}, orgid = #{orgid}, campusid = #{campusid}, pid = #{pid}, guid = #{guid}, text_param = #{textParam}, preachform = #{preachform}, bed_no = #{bedNo}, send_type = #{sendType}, task_name = #{taskName}, task_desc = #{taskDesc}, operator_no = #{operatorNo}, operator = #{operator}, hosp_type = #{hospType}, hospno = #{hospno}, wechat = #{wechat}, roomno = #{roomno}, admindate = #{admindate}, deptname = #{deptname}, leaveicd10code = #{leaveicd10code}, leavediagname = #{leavediagname}, libtemplateid = #{libtemplateid}, libtemplatename = #{libtemplatename}, patid = #{patid}, openid = #{openid}, long_send_time = #{longSendTime}, sendstate = #{sendstate}, finish_state = , service_type = #{serviceType}, score = #{score}, submit = #{submit}, leavehospitaldistrictcode = #{leavehospitaldistrictcode}, leavehospitaldistrictname = #{leavehospitaldistrictname}, drname = #{drname}, drcode = #{drcode}, starttime = #{starttime}, endtime = #{endtime}, excep = #{excep}, nurse_name=#{nurseName}, nurse_id=#{nurseId}, remark=#{remark}, doctor_opinion=#{doctorOpinion}, suggest=#{suggest}, inhospid=#{inhospid}, patfrom=#{patfrom}, task_guid=#{taskGuid}, patguid=#{patguid}, visit_count=#{visitCount}, is_visit_again=#{isVisitAgain}, upid=#{upid}, visit_time=#{visitTime}, visit_dept_code = #{visitDeptCode}, visit_dept_name = #{visitDeptName}, management_doctor_code = #{managementDoctorCode}, management_doctor=#{managementDoctor}, current_preachform=#{currentPreachform}, task_situation=#{taskSituation}, isabnormal=#{isabnormal}, continue_flag = #{continueFlag}, continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}, continue_count = #{continueCount}, continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}, continue_content = #{continueContent}, operation_item_id = #{operationItemId}, schedule_id = #{scheduleId}, schedule_detail_id = #{scheduleDetailId}, schedule_seq = #{scheduleSeq}, loop_count = #{loopCount}, is_manually_called = #{isManuallyCalled}, where id = #{id} update service_subtask sendname = #{sendname}, phone = #{phone}, sex = #{sex}, del_flag = #{delFlag}, age = #{age}, sfzh = #{sfzh}, addr = #{addr}, senderdetail = #{senderdetail}, type = #{type}, taskid = #{taskid}, templateid = #{templateid}, templatename = #{templatename}, senddate = #{senddate}, senduuid = #{senduuid}, result = #{result}, finishtime = #{finishtime}, recordid = #{recordid}, exrecallcount = #{exrecallcount}, pulltime = #{pulltime}, deptcode = #{deptcode}, labelstatus = #{labelstatus}, update_by = #{updateBy}, update_time = #{updateTime}, create_by = #{createBy}, create_time = #{createTime}, isupload = #{isupload}, upload_time = #{uploadTime}, orgid = #{orgid}, campusid = #{campusid}, pid = #{pid}, guid = #{guid}, text_param = #{textParam}, preachform = #{preachform}, bed_no = #{bedNo}, send_type = #{sendType}, task_name = #{taskName}, task_desc = #{taskDesc}, operator_no = #{operatorNo}, operator = #{operator}, hosp_type = #{hospType}, hospno = #{hospno}, wechat = #{wechat}, roomno = #{roomno}, admindate = #{admindate}, deptname = #{deptname}, leaveicd10code = #{leaveicd10code}, leavediagname = #{leavediagname}, libtemplateid = #{libtemplateid}, libtemplatename = #{libtemplatename}, patid = #{patid}, openid = #{openid}, long_send_time = #{longSendTime}, sendstate = #{sendstate}, finish_state = , service_type = #{serviceType}, score = #{score}, visit_count = #{visitCount}, submit = #{submit}, leavehospitaldistrictcode = #{leavehospitaldistrictcode}, leavehospitaldistrictname = #{leavehospitaldistrictname}, drname = #{drname}, drcode = #{drcode}, starttime = #{starttime}, endtime = #{endtime}, excep = #{excep}, nurse_name=#{nurseName}, nurse_id=#{nurseId}, remark=#{remark}, doctor_opinion=#{doctorOpinion}, suggest=#{suggest}, inhospid=#{inhospid}, patfrom=#{patfrom}, taskGuid=#{taskGuid}, patguid=#{patguid}, is_visit_again=#{isVisitAgain}, upid=#{upid}, visit_time=#{visitTime}, visit_dept_code = #{visitDeptCode}, visit_dept_name = #{visitDeptName}, management_doctor_code = #{managementDoctorCode}, management_doctor=#{managementDoctor}, current_preachform=#{currentPreachform}, task_situation=#{taskSituation}, isabnormal=#{isabnormal}, continue_flag = #{continueFlag}, continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}, continue_count = #{continueCount}, continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}, continue_content = #{continueContent}, is_manually_called = #{isManuallyCalled}, where 1=1 and patid = #{patid} and taskid = #{taskid} and orgid = #{orgid} and campusid = #{campusid} update service_subtask sendname = #{sendname}, phone = #{phone}, sex = #{sex}, del_flag = #{delFlag}, sendstate = #{sendstate}, finish_state = , age = #{age}, sfzh = #{sfzh}, addr = #{addr}, senderdetail = #{senderdetail}, type = #{type}, taskid = #{taskid}, templateid = #{templateid}, templatename = #{templatename}, senddate = #{senddate}, senduuid = #{senduuid}, result = #{result}, finishtime = #{finishtime}, recordid = #{recordid}, exrecallcount = #{exrecallcount}, pulltime = #{pulltime}, deptcode = #{deptcode}, labelstatus = #{labelstatus}, update_by = #{updateBy}, update_time = #{updateTime}, create_by = #{createBy}, create_time = #{createTime}, isupload = #{isupload}, upload_time = #{uploadTime}, orgid = #{orgid}, campusid = #{campusid}, pid = #{pid}, guid = #{guid}, visit_count = #{visitCount}, is_visit_again = #{isVisitAgain}, text_param = #{textParam}, preachform = #{preachform}, bed_no = #{bedNo}, send_type = #{sendType}, task_name = #{taskName}, task_desc = #{taskDesc}, operator_no = #{operatorNo}, operator = #{operator}, hosp_type = #{hospType}, hospno = #{hospno}, wechat = #{wechat}, roomno = #{roomno}, admindate = #{admindate}, deptname = #{deptname}, leaveicd10code = #{leaveicd10code}, leavediagname = #{leavediagname}, libtemplateid = #{libtemplateid}, libtemplatename = #{libtemplatename}, patid = #{patid}, openid = #{openid}, long_send_time = #{longSendTime}, service_type = #{serviceType}, score = #{score}, submit = #{submit}, leavehospitaldistrictcode = #{leavehospitaldistrictcode}, leavehospitaldistrictname = #{leavehospitaldistrictname}, drname = #{drname}, drcode = #{drcode}, endtime = #{endtime}, starttime = #{starttime}, excep = #{excep}, nurse_name=#{nurseName}, nurse_id=#{nurseId}, remark=#{remark}, doctor_opinion=#{doctorOpinion}, suggest=#{suggest}, inhospid=#{inhospid}, patfrom=#{patfrom}, task_guid=#{taskGuid}, patguid=#{patguid}, upid=#{upid}, visit_time=#{visitTime}, visit_dept_code = #{visitDeptCode}, visit_dept_name = #{visitDeptName}, management_doctor_code = #{managementDoctorCode}, management_doctor=#{managementDoctor}, current_preachform=#{currentPreachform}, task_situation=#{taskSituation}, isabnormal=#{isabnormal}, continue_flag = #{continueFlag}, continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}, continue_count = #{continueCount}, continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}, continue_content = #{continueContent}, is_manually_called = #{isManuallyCalled}, patid = #{patid} and taskid = #{taskid} and id = #{id} and inhospid = #{inhospid} update service_subtask sendname = #{sendname}, phone = #{phone}, sex = #{sex}, sendstate = #{sendstate}, finish_state = , age = #{age}, sfzh = #{sfzh}, addr = #{addr}, senderdetail = #{senderdetail}, type = #{type}, taskid = #{taskid}, templateid = #{templateid}, templatename = #{templatename}, senddate = #{senddate}, senduuid = #{senduuid}, result = #{result}, finishtime = #{finishtime}, recordid = #{recordid}, exrecallcount = #{exrecallcount}, pulltime = #{pulltime}, deptcode = #{deptcode}, labelstatus = #{labelstatus}, update_by = #{updateBy}, update_time = #{updateTime}, create_by = #{createBy}, create_time = #{createTime}, isupload = #{isupload}, upload_time = #{uploadTime}, orgid = #{orgid}, campusid = #{campusid}, pid = #{pid}, guid = #{guid}, text_param = #{textParam}, preachform = #{preachform}, bed_no = #{bedNo}, send_type = #{sendType}, task_name = #{taskName}, task_desc = #{taskDesc}, operator_no = #{operatorNo}, operator = #{operator}, hosp_type = #{hospType}, hospno = #{hospno}, wechat = #{wechat}, roomno = #{roomno}, admindate = #{admindate}, visit_count = #{visitCount}, is_visit_again = #{isVisitAgain}, deptname = #{deptname}, leaveicd10code = #{leaveicd10code}, leavediagname = #{leavediagname}, libtemplateid = #{libtemplateid}, libtemplatename = #{libtemplatename}, patid = #{patid}, openid = #{openid}, long_send_time = #{longSendTime}, service_type = #{serviceType}, score = #{score}, submit = #{submit}, leavehospitaldistrictcode = #{leavehospitaldistrictcode}, leavehospitaldistrictname = #{leavehospitaldistrictname}, drname = #{drname}, drcode = #{drcode}, endtime = #{endtime}, starttime = #{starttime}, excep = #{excep}, nurse_name=#{nurseName}, nurse_id=#{nurseId}, remark=#{remark}, doctor_opinion=#{doctorOpinion}, suggest=#{suggest}, inhospid=#{inhospid}, patfrom=#{patfrom}, task_guid=#{taskGuid}, patguid=#{patguid}, upid=#{upid}, visit_time=#{visitTime}, visit_dept_code = #{visitDeptCode}, visit_dept_name = #{visitDeptName}, management_doctor_code = #{managementDoctorCode}, management_doctor=#{managementDoctor}, current_preachform=#{currentPreachform}, task_situation=#{taskSituation}, isabnormal=#{isabnormal}, continue_flag = #{continueFlag}, continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}, continue_count = #{continueCount}, continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP}, continue_content = #{continueContent}, is_manually_called = #{isManuallyCalled}, where task_guid = #{taskGuid} and task_name = #{taskName} update service_subtask del_flag =1 where id = #{id} update service_subtask del_flag =1 where patid = #{patid} and taskid = #{taskid}