陈昶聿
3 天以前 13f9867df6fc7de535670169c190df4ec9012968
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -18,6 +19,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.common.utils.sms.smsUtils;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import com.smartor.common.LSHospTokenUtil;
@@ -332,6 +334,7 @@
//                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false");
                        sendMagParam.setPhone(serviceSubtask.getPhone());
                        sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
                        log.info("sendMagParam的值为:{}", sendMagParam);
                        //如果type是语音随访的话(说明补偿发送方式中有电话随访的方式,这里的外链就地址只能用/sf)
                        if (serviceSubtask.getType().equals("1"))
                            sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
@@ -427,8 +430,16 @@
                    } else if (active.equals("sltd")) {
                        //省立同德的短信发送方式
                        String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                        if (StringUtils.isNotEmpty(data) && data.contains("result=0")) {
                            s = "true";
                        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")) {
                                s = "true";
                            } else {
                                setFailPreachForm(serviceSubtask, sendPreachform, "短信发送失败: " + data, "5");
                                throw new BaseException("短信发送失败");
                            }
                        } else {
                            setFailPreachForm(serviceSubtask, sendPreachform, "短信发送失败: " + data, "5");
                            throw new BaseException("短信发送失败");
@@ -570,6 +581,7 @@
                    //获取微信公众号请求信息根据机构ID
                    log.error("获取微信公众号请求信息根据机构ID:{}", patArchive.getOrgid());
                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
                    //市一医院 不校验
                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
                        serviceSubtask.setCurrentPreachform(sendPreachform);
                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
@@ -579,31 +591,36 @@
                        setFailPreachForm(serviceSubtask, sendPreachform, "该机构的公众号配置信息不全,无法通过公众号发送", "5");
                        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);
                    log.error("map的值为:{}", map);
                    if (!map.isEmpty()) {
                        serviceSubtask.setResult("success");
                        serviceSubtask.setSendstate(3L);
                        log.error("aBoolean的值为:{}", aBoolean);
                        if (map.get("succ").toString().equals("true")) {
                            aBoolean = true;
                        }
                        if (aBoolean == false) {
                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                            serviceSubtaskRecord.setPreachform("5");
                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                            //在子任务表里记录一下
                            setFailPreachForm(serviceSubtask, sendPreachform, "公众号发送失败", "5");
                            continue;
                    String wxCode = "";
                    if (active.equals("hzszlyy")) {
                        wxCode = smsUtils.sendChat(url, patArchive.getTelcode(), serviceSubtask.getSfzh());
                        log.info(wxCode);
                    } else {
                        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);
                        log.error("map的值为:{}", map);
                        if (!map.isEmpty()) {
                            serviceSubtask.setResult("success");
                            serviceSubtask.setSendstate(3L);
                            log.error("aBoolean的值为:{}", aBoolean);
                            if (map.get("succ").toString().equals("true")) {
                                aBoolean = true;
                            }
                            if (aBoolean == false) {
                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                                serviceSubtaskRecord.setPreachform("5");
                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                                serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                                //在子任务表里记录一下
                                setFailPreachForm(serviceSubtask, sendPreachform, "公众号发送失败", "5");
                                continue;
                            }
                        }
                    }
                } catch (Exception e) {
@@ -703,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
@@ -721,6 +741,7 @@
                if (allSendStateNot1AndNot9) {
                    //说明全发送失败了
                    serviceSubtask.setSendstate(5L);
                    serviceSubtask.setRemark("-----getSendPreachform,发送方式全部失败");
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                }
                return "-1";
@@ -782,6 +803,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");
@@ -825,6 +847,7 @@
                    if (failSendstate.equals("4") || failSendstate.equals("5")) {
                        serviceSubtask.setCurrentPreachform(preachform);
                        serviceSubtask.setSendstate(5L);
                        serviceSubtask.setRemark("setFailPreachForm方法 当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        return true;
                    }