liusheng
6 天以前 355087c24ad9a2f73ae74662b207c4d0f7b0f7a0
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -102,6 +102,9 @@
    @Value("${server.port}")
    private String port;
    @Value("${spring.profiles.active}")
    private String active;
    @Autowired
    private ISysConfigService configService;
@@ -138,9 +141,13 @@
            //将状态改成完成
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid()));
            serviceTask.setSendState(5L);
            serviceTask.setFail(1L);
            svyTaskMapper.updateServiceTask(serviceTask);
            //在问卷中,选中某个选项要进行服务补偿时,只是借用该服务的外壳,不对该服务有任务影响
            if (commonTaskcallMQ.getUpdateSendstate() == null || commonTaskcallMQ.getUpdateSendstate() == 1) {
                serviceTask.setSendState(5L);
                serviceTask.setFail(1L);
                svyTaskMapper.updateServiceTask(serviceTask);
            }
        } catch (Exception e) {
            Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());
            if (integer != null && integer == 3) {
@@ -194,11 +201,11 @@
            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
            //获取发送方式
            String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
            log.info("sendPreachform的值为:{}", sendPreachform);
            if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
                //说明已经全部遍历完了,当前的执行方式序号是最后一个了   或者  该患者已经随访结束(成功或失败了或不执行)
                continue;
            }
            String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
            if (descByCode.equals("电话")) {
                try {
@@ -293,7 +300,7 @@
                        sendMagParam.setPhone(serviceSubtask.getPhone());
                        sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
                        if (visitHosp == 2) {
                            sendMagParam.setContent("您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            sendMagParam.setContent("您好,邀请您填写出院随访调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                        } else if (visitHosp == 1) {
                            sendMagParam.setContent("【新华医院】您好,邀请您填写出院随访调查表,请点击" + sendMagParam.getUrl() + "填写。感谢您配合!");
                        }
@@ -318,11 +325,13 @@
                        //如果type是语音随访的话(说明补偿发送方式中有电话随访的方式,这里的外链就地址只能用/sf)
                        if (serviceSubtask.getType().equals("1"))
                            sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
                        if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
                            sendMagParam.setContent("【景宁畲族自治县人民医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                        } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
                            sendMagParam.setContent("【丽水中医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                        } else sendMagParam.setContent("【新华医院】您好,邀请您填写出院调查表,请点击" + sendMagParam.getUrl() + "填写。感谢您配合!");
                        if (visitHosp == 2) {
                            sendMagParam.setContent("您好,邀请您填写出院调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                        } else if (visitHosp == 1) {
                            sendMagParam.setContent("【新华医院】您好,邀请您填写出院调查表,请点击" + sendMagParam.getUrl() + "填写。感谢您配合!");
                        } else if (visitHosp == 4) {
                            sendMagParam.setContent("【省立同德】您好,邀请您填写出院调查表,请点击" + sendMagParam.getUrl() + "填写。感谢您配合!");
                        }
                    } else if (type == 3) {
                        //宣教
                        ServiceOutPath serviceOutPath = new ServiceOutPath();
@@ -341,12 +350,13 @@
                        if (heLibrary.getHetype().equals("1")) {
                            sendMagParam.setPhone(serviceSubtask.getPhone());
                            sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
                            if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
                                sendMagParam.setContent("【景宁畲族自治县人民医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
                                sendMagParam.setContent("【丽水中医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            } else
                            if (visitHosp == 2) {
                                sendMagParam.setContent("您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            } else if (visitHosp == 1) {
                                sendMagParam.setContent("【新华医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            }else if (visitHosp == 4) {
                                sendMagParam.setContent("【省立同德】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!");
                            }
                        } else {
                            //通知
                            sendMagParam.setPhone(serviceSubtask.getPhone());
@@ -364,8 +374,10 @@
                        s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
                    } else if (visitHosp == 2) {
                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
                        log.info("-------00token.360的URL为:{}", url);
                        //丽水的短信发送方式
                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
                        log.info("-----------map的值为:{}", map);
                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
                        log.info("-----------token的值为:{}", token);
                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
@@ -380,6 +392,7 @@
                        log.info("---------丽水短信发送结果:{}-------", dxCode);
                        ObjectMapper objectMapper = new ObjectMapper();
                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
                        log.info("---------丽水短信发送结果--textParam的值为:{}-------", textParam);
                        String code = textParam.get("Code").toString();
                        if (code.equals("0")) {
                            s = "true";
@@ -387,7 +400,7 @@
                            setFailPreachForm(serviceSubtask, sendPreachform, "短信发送失败", "5");
                            throw new BaseException("短信发送失败");
                        }
                    } else if (visitHosp == 3) {
                    } else if (visitHosp == 4) {
                        //省立同德的短信发送方式
                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                        String code = data.get("code").toString();
@@ -508,7 +521,6 @@
                        continue;
                    }
                    String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
                    log.error("wxCode的值为:{}", wxCode);
                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
@@ -566,6 +578,8 @@
            } else if (descByCode.equals("人工")) {
                setFailPreachForm(serviceSubtask, sendPreachform, "人工待执行", "2");
            } else if (descByCode.equals("微信小程序")) {
                setFailPreachForm(serviceSubtask, sendPreachform, "微信小程序待执行", "2");
            }
        }
@@ -592,6 +606,7 @@
    }
    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
        log.info("-----getSendPreachform的serviceSubtaskPreachform入参:{},------serviceSubtask:{}", serviceSubtaskPreachform, serviceSubtask);
        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
        // 情况1:currentPreachform为空,取sort为1的preachform
@@ -635,6 +650,7 @@
     * @return
     */
    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
        log.info("^^^^^^^^^--------setFailPreachForm的入参为serviceSubtask:{}   ,preachform值为:{},  failSendstate:{}", serviceSubtask, preachform, failSendstate);
        if (preachform.equals("-1")) {
            //说明都不需要执行了
            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
@@ -642,7 +658,12 @@
            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
            serviceSubtaskPreachform.setSendstate(failSendstate);
            if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
                //如果是宣教或通知,并且发送成功,直接将发送状态改成9
                if (failSendstate.equals("2")) serviceSubtaskPreachform.setSendstate("9");
            }
            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
            return true;
        }
@@ -666,6 +687,10 @@
        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
            serviceSubtaskPreachform1.setSendstate(failSendstate);
            if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
                //如果是宣教或通知,并且发送成功,直接将发送状态改成9
                if (failSendstate.equals("2")) serviceSubtaskPreachform1.setSendstate("9");
            }
            serviceSubtaskPreachform1.setRemark(remark);
            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
            //如果当前的preachform已经是最后一个了,并且本次还是发送失败,那直接将serviceSubtask的sendstate状态改成5就行了(全失败了)
@@ -683,10 +708,16 @@
            log.error("【MQ中该患者没有查询到属于他的发送方式,subid:{},prechform:{},orgid:{}】", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
            return false;
        }
        log.info("^^^^^^^^^--------preachform的值为:{}", preachform);
        serviceSubtask.setCurrentPreachform(preachform);
        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
        serviceSubtask.setSendstate(3L);
        if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
            //如果是宣教或通知,并且发送成功,则直接将serviceSubtask状态改成6L(这个患者是没有题做的,不会再触发接口进行状态修改)
            if (failSendstate.equals("2")) {
                serviceSubtask.setSendstate(6L);
            }
        }
        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
        return true;
    }