已修改4个文件
80 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -720,10 +720,13 @@
            serviceSubtaskPreachforms = serviceSubtaskPreachformList;
        }
        // 情况1:currentPreachform为空,取sort为1的preachform
        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
            String firstPreachform = serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
            serviceSubtaskPreachform.setPreachform(firstPreachform);
            serviceSubtaskPreachform.setCurrentSendTime(new Date());
            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            return firstPreachform;
        }
        // 情况2:currentPreachform不为空,找下一个sort
@@ -799,6 +802,7 @@
            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
            serviceSubtaskPreachform.setSendstate(failSendstate);
            serviceSubtaskPreachform.setCurrentSendTime(new Date());
            if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
                //如果是宣教或通知,并且发送成功,直接将发送状态改成9
                if (failSendstate.equals("2")) serviceSubtaskPreachform.setSendstate("9");
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -12,10 +12,7 @@
import com.ruoyi.common.enums.ServiceFromEnum;
import com.ruoyi.common.enums.WxGZHEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.HttpUtil;
import com.ruoyi.common.utils.OkHttpExample;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.ruoyi.common.utils.StringUtils;
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;
@@ -593,8 +590,7 @@
                redisCache.setCacheListLeftAndDistinct("cache-0", list);
                log.info("【sfHandlle】电话任务已加入队列,数量:{}", list.size());
            }
        }
        else if (descByCode.equals("微信小程序")) {
        } else if (descByCode.equals("微信小程序")) {
            //微信小程序
            if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
                //说明该任务的患者是循环执行的
@@ -621,8 +617,7 @@
                //将当前要执行的患者放到过滤患者集合中
                serviceSubtaskListFilter.add(serviceSubtask);
            }
        }
        else if (descByCode.equals("短信")) {
        } else if (descByCode.equals("短信")) {
            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
            log.info("【sfHandlle】处理短信长期任务,患者ID:{}", serviceSubtask.getPatid());
@@ -881,24 +876,21 @@
        // 情况1:currentPreachform为空,取sort为1的preachform
        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
            String firstPreachform = serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
            //更新一下当前发送时间
            if (StringUtils.isNotEmpty(firstPreachform)) {
                serviceSubtaskPreachform.setPreachform(firstPreachform);
                serviceSubtaskPreachform.setCurrentSendTime(new Date());
                serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            }
            return firstPreachform;
        }
        // 情况2:currentPreachform不为空,找下一个sort
        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
        if (currentSort.isPresent()) {
            //微信已发送、已领取视为发送成功,不再进行补偿 -丽水中医院
            if(active.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"))){
                    return "-1";
                }
            }
            // 检查是否所有sendstate不等于9
            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
            if (!allSendStateNot1AndNot9) {
@@ -922,7 +914,6 @@
            // 当sort等于列表size时,下一个sort为-1
            Long nextSort = currentSort.get() + 1;
            //如果当前的发送方式不为空,并且开始准备要用下一种方式发送了,那当前的肯定没有发送成功,需要设置失败
            // (这里主要是,人工如果没有随访,然后到公众号的时候,就不会再去管人工是否成功,人工的状态会一直卡在2的状态上)
            if (StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform())) {
@@ -930,7 +921,34 @@
            }
            // 找到下一个sort对应的preachform
            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
            String nextPreachform = serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
            //微信已发送、已领取跳过短信发送,进行人工 -丽水中医院
            if (active.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());
                serviceSubtaskPreachform.setPreachform(nextPreachform);
                serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            }
            return nextPreachform;
        }
        return null;
@@ -1065,6 +1083,7 @@
            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
            serviceSubtaskPreachform.setSendstate(failSendstate);
            serviceSubtaskPreachform.setCurrentSendTime(new Date());
            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            return true;
        }
smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java
@@ -6,6 +6,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 【请填写功能名称】对象 service_subtask_preachform
 *
@@ -60,6 +62,12 @@
    private String sendstate;
    /**
     * 当前发送方式的实际发送时间
     */
    @ApiModelProperty("当前发送方式的实际发送时间")
    private Date currentSendTime;
    /**
     * 机构编码
     */
    @ApiModelProperty("机构编码")
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java
@@ -46,6 +46,7 @@
     * @return 结果
     */
    public int updateServiceSubtaskPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform);
    public int updateSSPByCondition(ServiceSubtaskPreachform serviceSubtaskPreachform);
    /**