liusheng
2 天以前 8249bbcc710c42f89c69fb0bd575094acd2e418d
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -11,6 +11,7 @@
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;
@@ -19,6 +20,7 @@
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import com.smartor.common.LSHospTokenUtil;
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.domain.*;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
@@ -162,6 +164,8 @@
    @Value("${server.port}")
    private String port;
    @Autowired
    private MtSubmitSmUtil mtSubmitSmUtil;
    @Value("${spring.profiles.active}")
    private String active;
@@ -264,7 +268,9 @@
            } catch (Exception e) {
                log.error("【dealHisData】河南数据采集异常", e);
            }
        } else if (active.trim().equals("sltd")) {
        } else if (active.trim().equals("sltd") || active.trim().equals("nhfy")) {
            //省立同德与华南附一用同一套采集方法(都是来未来提供)
            try {
                //获取是否需要采集用户、部门信息
                SysConfig config = new SysConfig();
@@ -319,7 +325,6 @@
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    List<String> list = new ArrayList<>();
//                    list.add("FH0108.02");
                    list.add("FH0109.22");
                    list.add("FH0109.23");
                    list.add("FH0109.53");
@@ -342,19 +347,38 @@
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
//                    log.debug("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", cid);
//                    serviceSLTDInhospReqVO.setStartHeadTime(null);
//                    serviceSLTDInhospReqVO.setStartTailTime(null);
//                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
//                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
//                    serviceSLTDInhospReqVO.setStatusList(null);
//                    List<String> list1 = new ArrayList<>();
//                    list1.add("FH0108.01");
//                    list1.add("FH0108.03");
//                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
//                    log.debug("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
//                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
//                    log.debug("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", cid);
                    // 门急诊分页采集:每页1000条,直到无数据为止
                    log.debug("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    serviceSLTDInhospReqVO.setStatusList(null);
                    List<String> list1 = new ArrayList<>();
                    list1.add("FH0108.01");
                    list1.add("FH0108.03");
                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                    long outpPage = 1L;
                    final long OUTP_PAGE_SIZE = 1000L;
                    while (true) {
                        serviceSLTDInhospReqVO.setCurrent(outpPage);
                        serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
                        log.debug("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                        List<ServiceSLTDInhospResDTO> outpResult = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                        if (CollectionUtils.isEmpty(outpResult)) {
                            log.debug("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                            break;
                        }
                        log.debug("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                        if (outpResult.size() < OUTP_PAGE_SIZE) {
                            break;
                        }
                        outpPage++;
                    }
                    // 清除分页参数,避免影响后续出入院查询
                    serviceSLTDInhospReqVO.setCurrent(null);
                    serviceSLTDInhospReqVO.setSize(null);
                    log.debug("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                    log.debug("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
@@ -558,12 +582,23 @@
                //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;
                }
@@ -729,7 +764,7 @@
                        if (heLibrary.getHetype().equals("1")) {
                            sendMagParam.setPhone(serviceSubtask.getPhone());
                            sendMagParam.setUrl(localIP + ":" + req_path + "/xj?p=" + format);
                            if (active.equals("ls") || active.equals("sltd")) {
                            if (active.equals("ls") || active.equals("sltd") || active.equals("nhfy")) {
                                sendMagParam.setContent("您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            } else if (active.equals("xh")) {
                                sendMagParam.setContent("【新华医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
@@ -781,15 +816,22 @@
                        if (code.equals("0")) {
                            isSuccess = "true";
                        }
                    } else if (active.equals("sltd")) {
                    } else if (active.equals("sltd") || active.equals("nhfy")) {
                        log.info("sltd进来了吗?{}   ,---sendMagParam.getContent()的参数为:{}", active, sendMagParam.getContent());
                        //省立同德的短信发送方式
                        String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                        if (StringUtils.isNotEmpty(data)) {
                            ObjectMapper mapper = new ObjectMapper();
                            JsonNode root = mapper.readTree(data);
                            String status = root.get("result").get(0).get("status").asText();
                            if (status.equals("00000")) {
                        if (active.equals("sltd")) {
                            //省立同德的短信发送方式
                            String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                            if (StringUtils.isNotEmpty(data)) {
                                ObjectMapper mapper = new ObjectMapper();
                                JsonNode root = mapper.readTree(data);
                                String status = root.get("result").get(0).get("status").asText();
                                if (status.equals("00000")) {
                                    isSuccess = "true";
                                }
                            }
                        } else if (active.equals("nhfy")) {
                            Map<String, Object> smsResult = mtSubmitSmUtil.submitSm(sendMagParam.getPhone(), sendMagParam.getContent());
                            if (smsResult != null && smsResult.get("result") != null && smsResult.get("result").toString().equals("0")) {
                                isSuccess = "true";
                            }
                        }
@@ -894,7 +936,12 @@
                    Boolean wxCodeSuccess = false;
                    if (active.equals("hzszlyy")) {
                        if (!map.isEmpty() && map.get("success") != null) {
                            wxCodeSuccess = (boolean) map.get("success");
                            Integer wxCodeSuccessShiyi = (Integer) map.get("success");
                            if (ObjectUtils.isNotEmpty(wxCodeSuccessShiyi) && wxCodeSuccessShiyi == 1) {
                                wxCodeSuccess = true;
                            } else {
                                wxCodeSuccess = false;
                            }
                        }
                    } else {
                        if (!map.isEmpty() && map.get("succ") != null) {
@@ -920,7 +967,7 @@
                }
            }
        } else if (descByCode.equals("人工")) {
            setSuccessPreachForm(serviceSubtask, sendPreachform, "人工待执行", "2");
            setSuccessPreachForm(serviceSubtask, sendPreachform, "人工超时", "7");
        }
    }
@@ -988,6 +1035,12 @@
                    //说明全发送失败了
                    serviceSubtask.setSendstate(5L);
                    log.error("getSendPreachform方法 检查是否所有sendstate不等于9, 全失败了");
                    serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败");
                    //人工发送超时
                    if (ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtask.setSendstate(7L);
                        serviceSubtask.setRemark("人工发送超时");
                    }
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    //修改发送状态
                    setFail(serviceSubtaskPreachforms, serviceSubtask);
@@ -1029,10 +1082,8 @@
                serviceSubtaskPreachform.setPreachform(nextPreachform);
                serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            }
            return nextPreachform;
        }
        return null;
    }
@@ -1071,6 +1122,11 @@
            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;
@@ -1195,17 +1251,32 @@
                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("人工发送超时");
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    return true;
                } else {
                    if (failSendstate.equals("4") || failSendstate.equals("5")) {
                        serviceSubtask.setCurrentPreachform(preachform);
                        serviceSubtask.setSendstate(5L);
                        log.error("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败");
                        //serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        return true;
                    }
                }
            }
        } else {
            log.error("【定时任务中该患者没有查询到属于他的发送方式,subid:{},prechform:{},orgid:{}】", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
@@ -1214,7 +1285,12 @@
        //将下一次的随访时间与当前执行方式记录一下
        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")) {