liusheng
5 小时以前 7518413aeb91ea9b9dd80c7a5d51057ff616a8f1
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -608,23 +608,14 @@
                //2判断一下,当前的sort是不是等于需要执行的总个数,如果等于的话,说明是最后一个,直接将servuce_subtask的状态改成5,执行失败就行了
                Long cs = currentSort.get();
                if (cs.equals(serviceSubtaskPreachforms.size())) {
                    if (serviceSubtask.getPreachform().equals("1")) {
                        serviceSubtask.setSendstate(7L);
                        serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿 人工超时");
                    } else {
                        serviceSubtask.setSendstate(5L);
                        serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿,全部执行失败");
                    }
                    serviceSubtask.setSendstate(7L);
                    serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿,全部执行失败(超时)");
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    //修改发送方式的状态为失败
                    if (serviceSubtaskPreachform.getPreachform().equals("1")) {
                        serviceSubtaskPreachform.setSendstate("7");
                        serviceSubtaskPreachform.setId(id.get());
                    } else {
                        serviceSubtaskPreachform.setSendstate("5");
                        serviceSubtaskPreachform.setId(id.get());
                    }
                    serviceSubtaskPreachform.setSendstate("5");
                    serviceSubtaskPreachform.setId(id.get());
                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
                    continue;
                }
@@ -940,20 +931,6 @@
                    //市一医院
                    if (active.equals("hzszlyy")) {
                        //处理中文乱码问题
                        /**String title = URLEncoder.encode("您好,邀请您填写出院调查表,请点击填写。", StandardCharsets.UTF_8.toString());
                         String content = URLEncoder.encode("您好,邀请您填写出院调查表,请点击填写。", StandardCharsets.UTF_8.toString());
                         String encodedUrl = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
                         String urlTemp = "http://192.200.54.14:5003/sfjk/SendMessage?sfzh=" + serviceSubtask.getSfzh() +
                         "&title=" + title +
                         "&content=" + content +
                         "&phone=" + patArchive.getTelcode() +
                         "&url=" + encodedUrl +
                         "&key=ff76f8904f5f32b5ee1739e8ea46e60g";
                         //                        HttpUtils.sendGet(urlTemp);
                         String sendMsg = "";
                         sendMsg = HttpUtils.sendPost(urlTemp);
                         log.info(sendMsg); **/
                        wxCode = smsUtils.sendChat(url, patArchive.getTelcode(), serviceSubtask.getSfzh());
                        log.info(wxCode);
@@ -1004,7 +981,7 @@
                }
            }
        } else if (descByCode.equals("人工")) {
            setSuccessPreachForm(serviceSubtask, sendPreachform, "人工超时", "7");
            setSuccessPreachForm(serviceSubtask, sendPreachform, "人工发送成功", "2");
        }
    }
@@ -1070,14 +1047,9 @@
            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
                if (allSendStateNot1AndNot9) {
                    //说明全发送失败了
                    serviceSubtask.setSendstate(5L);
                    serviceSubtask.setSendstate(7L);
                    log.error("getSendPreachform方法 检查是否所有sendstate不等于9, 全失败了");
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败" : "所有发送方式均未获取结果,任务失败");
                    //人工发送超时
                    if (ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtask.setSendstate(7L);
                        serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "人工发送超时" : "人工发送超时");
                    }
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败(超时)" : "所有发送方式均未获取结果,任务失败(超时)");
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    //修改发送状态
                    setFail(serviceSubtaskPreachforms, serviceSubtask);
@@ -1088,7 +1060,6 @@
            // 当sort等于列表size时,下一个sort为-1
            Long nextSort = currentSort.get() + 1;
            //如果当前的发送方式不为空,并且开始准备要用下一种方式发送了,那当前的肯定没有发送成功,需要设置失败
            // (这里主要是,人工如果没有随访,然后到公众号的时候,就不会再去管人工是否成功,人工的状态会一直卡在2的状态上)
            if (StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform())) {
                setFail(serviceSubtaskPreachforms, serviceSubtask);
            }
@@ -1096,23 +1067,6 @@
            // 找到下一个sort对应的preachform
            String nextPreachform = serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
            String orgid = serviceSubtask.getOrgid();
            //微信已发送、已领取跳过短信发送,进行人工 -丽水中医院
            if (StringUtils.isNotEmpty(orgid) && orgid.equals("47231022633110211A2101")) {
                //获取当前发送方式
                ServiceSubtaskPreachform currentServiceSubtaskPreachform = serviceSubtaskPreachforms.stream().filter(item -> item.getSort().equals(currentSort.get())).findFirst().orElse(new ServiceSubtaskPreachform());
                //当前发送方式为微信的,且下一发送方式为短信的,微信发送状态为已发送、已领取的,跳过短信步骤
                if (currentServiceSubtaskPreachform.getPreachform().equals("5") && (currentServiceSubtaskPreachform.getSendstate().equals("2") || currentServiceSubtaskPreachform.getSendstate().equals("3"))) {
                    if (StringUtils.isNotEmpty(nextPreachform) && nextPreachform.equals("2")) {
                        log.error("【sfHandlle】微信已发送,短信不发送,跳转人工");
                        setSuccessPreachForm(serviceSubtask, "-1", "微信已发送,短信不发送,跳转人工", "6");
                        //跳过短信,执行下一步
                        Long newNextSort = nextSort + 1;
                        //找到短信再下一个sort对应的preachform
                        nextPreachform = serviceSubtaskPreachforms.stream().filter(item -> newNextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
                    }
                }
            }
            //更新一下当前发送时间
            if (StringUtils.isNotEmpty(nextPreachform)) {
                serviceSubtaskPreachform.setCurrentSendTime(new Date());
@@ -1159,16 +1113,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("人工发送超时");
            }
            subtaskPreachform.setRemark("当前发送方式在规定时间内未成功获取结果");
            return serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform);
        }
        return 0;
    }
    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {
        Map<String, Object> map = new LinkedHashMap<>();
@@ -1275,9 +1224,9 @@
        //电话的未发送状态,需要查2,因为,数据可能卡在队列里了; (没进队列,电话状态还是1)
        if (preachform.equals("3") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
            serviceSubtaskPreachform.setSendstate("2");
        //人工的未发送状态,需要查2
        if (preachform.equals("1") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
            serviceSubtaskPreachform.setSendstate("2");
//        //人工的未发送状态,需要查2
//        if (preachform.equals("1") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
//            serviceSubtaskPreachform.setSendstate("2");
        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
@@ -1288,30 +1237,19 @@
                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就行了(全失败了)
            //如果当前的preachform已经是最后一个了,那直接将serviceSubtask的sendstate状态改成7就行了(全超时了)
            if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
                if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
                if (failSendstate.equals("4") || failSendstate.equals("5")) {
                    serviceSubtask.setCurrentPreachform(preachform);
                    serviceSubtask.setSendstate(7L);
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "人工发送超时" : "人工发送超时");
                    log.error("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败(超时)" : "所有发送方式均未获取结果,任务失败(超时)");
                    //serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                    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(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败" : "所有发送方式均未获取结果,任务失败");
                        //serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        return true;
                    }
                }
            }
@@ -1319,15 +1257,12 @@
            log.error("【定时任务中该患者没有查询到属于他的发送方式,subid:{},prechform:{},orgid:{}】", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
            return false;
        }
        //将下一次的随访时间与当前执行方式记录一下
        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
        serviceSubtask.setCurrentPreachform(preachform);
        if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
            serviceSubtask.setSendstate(7L);
            serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ",人工发送超时" : "人工发送超时");
        } else {
            serviceSubtask.setSendstate(3L);
        }
        serviceSubtask.setSendstate(3L);
        if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
            //如果是宣教或通知,并且发送成功,则直接将serviceSubtask状态改成6L(这个患者是没有题做的,不会再触发接口进行状态修改)
            if (failSendstate.equals("2")) {