| | |
| | | import com.ruoyi.common.enums.MsgLSEnum; |
| | | import com.ruoyi.common.enums.ServiceFromEnum; |
| | | import com.ruoyi.common.enums.WxGZHEnum; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.common.utils.http.HttpUtils; |
| | | import com.ruoyi.common.utils.sms.smsUtils; |
| | | import com.ruoyi.quartz.service.ICollectHISService; |
| | | import com.ruoyi.quartz.util.CreateDataTable; |
| | | import com.ruoyi.system.domain.SysConfig; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.smartor.common.LSHospTokenUtil; |
| | |
| | | |
| | | @Autowired |
| | | ICollectHISService icollectHis; |
| | | |
| | | @Autowired |
| | | CreateDataTable createDataTable; |
| | | |
| | | |
| | | @Value("${appid}") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 门诊分表定时任务:从 sys_config 读取分表模式,按模式建表并刷新视图 v_pat_med_outhosp |
| | | * 配置 key: outhosp.split.mode |
| | | * quarter -> 按季度,表名示例:pat_med_outhosp_20260103 |
| | | * year -> 按年,表名示例:pat_med_outhosp_2026 |
| | | * month -> 按月,表名示例:pat_med_outhosp_202601 |
| | | * 查询不到配置则不分表 |
| | | */ |
| | | public void createOuthospQuarterTable() { |
| | | log.info("【createOuthospQuarterTable】开始执行门诊分表任务"); |
| | | createDataTable.createOuthospQuarterTable(); |
| | | } |
| | | |
| | | /** |
| | | * 处理患者信息,进入子任务表(微信小程序) |
| | | */ |
| | | public void dealOutHospInfoXHC() { |
| | |
| | | |
| | | |
| | | /** |
| | | * 长期任务发送 |
| | | * 长期任务发送 |
| | | */ |
| | | public void longTaskSend() { |
| | | //获取任务信息 |
| | |
| | | //2判断一下,当前的sort是不是等于需要执行的总个数,如果等于的话,说明是最后一个,直接将servuce_subtask的状态改成5,执行失败就行了 |
| | | Long cs = currentSort.get(); |
| | | if (cs.equals(serviceSubtaskPreachforms.size())) { |
| | | serviceSubtask.setSendstate(5L); |
| | | serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿,全部执行失败"); |
| | | if(serviceSubtask.getPreachform().equals("1")){ |
| | | serviceSubtask.setSendstate(7L); |
| | | serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿 人工超时"); |
| | | }else { |
| | | serviceSubtask.setSendstate(5L); |
| | | serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿,全部执行失败"); |
| | | } |
| | | |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | //修改发送方式的状态为失败 |
| | | serviceSubtaskPreachform.setSendstate("5"); |
| | | serviceSubtaskPreachform.setId(id.get()); |
| | | if(serviceSubtaskPreachform.getPreachform().equals("1")){ |
| | | serviceSubtaskPreachform.setSendstate("7"); |
| | | serviceSubtaskPreachform.setId(id.get()); |
| | | }else { |
| | | serviceSubtaskPreachform.setSendstate("5"); |
| | | serviceSubtaskPreachform.setId(id.get()); |
| | | } |
| | | serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform); |
| | | continue; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 随访-补偿处理 |
| | | * |
| | | * @param serviceSubtask |
| | | */ |
| | | public void sfHandlle(ServiceSubtask serviceSubtask) { |
| | |
| | | } |
| | | } |
| | | } else if (descByCode.equals("人工")) { |
| | | setSuccessPreachForm(serviceSubtask, sendPreachform, "人工待执行", "2"); |
| | | setSuccessPreachForm(serviceSubtask, sendPreachform, "人工超时", "7"); |
| | | } |
| | | |
| | | } |
| | |
| | | //说明全发送失败了 |
| | | serviceSubtask.setSendstate(5L); |
| | | log.error("getSendPreachform方法 检查是否所有sendstate不等于9, 全失败了"); |
| | | //人工发送超时 |
| | | if(ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")){ |
| | | serviceSubtask.setSendstate(7L); |
| | | serviceSubtask.setRemark("getSendPreachform方法 检查是否所有sendstate不等于9, 人工发送超时"); |
| | | } |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | //修改发送状态 |
| | | setFail(serviceSubtaskPreachforms, serviceSubtask); |
| | |
| | | ServiceSubtaskPreachform subtaskPreachform = new ServiceSubtaskPreachform(); |
| | | subtaskPreachform.setSendstate("5"); |
| | | subtaskPreachform.setId(id.get()); |
| | | //人工发送超时 |
| | | if(ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")){ |
| | | subtaskPreachform.setSendstate("7"); |
| | | subtaskPreachform.setRemark("人工发送超时"); |
| | | } |
| | | return serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform); |
| | | } |
| | | return 0; |
| | |
| | | if (failSendstate.equals("2")) serviceSubtaskPreachform1.setSendstate("9"); |
| | | } |
| | | serviceSubtaskPreachform1.setRemark(remark); |
| | | if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){ |
| | | serviceSubtaskPreachform1.setSendstate("7"); |
| | | serviceSubtaskPreachform1.setRemark("人工发送超时"); |
| | | } |
| | | serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1); |
| | | |
| | | //如果当前的preachform已经是最后一个了,那直接将serviceSubtask的sendstate状态改成5就行了(全失败了) |
| | | if (serviceSubtaskPreachform1.getSort() == sspCount.size()) { |
| | | if (failSendstate.equals("4") || failSendstate.equals("5")) { |
| | | if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){ |
| | | serviceSubtask.setCurrentPreachform(preachform); |
| | | serviceSubtask.setSendstate(5L); |
| | | serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败"); |
| | | serviceSubtask.setSendstate(7L); |
| | | serviceSubtask.setRemark("setSuccessPreachForm方法,人工发送超时"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | return true; |
| | | }else { |
| | | if (failSendstate.equals("4") || failSendstate.equals("5")) { |
| | | serviceSubtask.setCurrentPreachform(preachform); |
| | | serviceSubtask.setSendstate(5L); |
| | | serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | log.error("【定时任务中该患者没有查询到属于他的发送方式,subid:{},prechform:{},orgid:{}】", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid()); |
| | |
| | | //将下一次的随访时间与当前执行方式记录一下 |
| | | serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime())); |
| | | serviceSubtask.setCurrentPreachform(preachform); |
| | | serviceSubtask.setSendstate(3L); |
| | | if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){ |
| | | serviceSubtask.setSendstate(7L); |
| | | serviceSubtask.setRemark("人工发送超时"); |
| | | }else { |
| | | serviceSubtask.setSendstate(3L); |
| | | } |
| | | if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) { |
| | | //如果是宣教或通知,并且发送成功,则直接将serviceSubtask状态改成6L(这个患者是没有题做的,不会再触发接口进行状态修改) |
| | | if (failSendstate.equals("2")) { |