|  |  | 
 |  |  | import com.ruoyi.common.utils.http.HttpUtils; | 
 |  |  | import com.smartor.common.LSHospTokenUtil; | 
 |  |  | import com.smartor.domain.*; | 
 |  |  | import com.smartor.mapper.HeLibraryMapper; | 
 |  |  | import com.smartor.mapper.PatArchiveMapper; | 
 |  |  | import com.smartor.mapper.ServiceSubtaskMapper; | 
 |  |  | import com.smartor.mapper.ServiceTaskMapper; | 
 |  |  | 
 |  |  |     private ServiceSubtaskMapper ivrTaskcallMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private HeLibraryMapper heLibraryMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ServiceTaskMapper ivrTaskMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |     public void onMessage(Message message, byte[] pattern) { | 
 |  |  |         log.info("监听Redis key过期,key:{},channel:{}", message.toString(), new String(pattern)); | 
 |  |  |         String ip = localIP; | 
 |  |  |         log.error("本机的网络IP为:{}", ip); | 
 |  |  |         log.info("本机的网络IP为:{}", ip); | 
 |  |  |         String content = message.toString(); | 
 |  |  |         //判断是不是任务信息,如果不是,直接返回,不需要执行 | 
 |  |  |         if (!content.contains("taskid") || !port.equals("8095")) { | 
 |  |  | 
 |  |  |      * @param commonTaskcallMQ | 
 |  |  |      */ | 
 |  |  |     public void tsakHandle(CommonTaskcallMQ commonTaskcallMQ, String ip, Integer type) { | 
 |  |  |         log.error("进任务了吗?{}", commonTaskcallMQ); | 
 |  |  |         log.info("进任务了吗?{}", commonTaskcallMQ); | 
 |  |  |         //判断一下commonTaskcallMQ中的stopstate是否与ivr_task中的一致,不一致,则说明是暂停了 | 
 |  |  |         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid()); | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) { | 
 |  |  |             //如何任务发送方式不为空 | 
 |  |  |             String[] split = commonTaskcallMQ.getPreachform().split(","); | 
 |  |  |             log.error("split的值为:{}", split); | 
 |  |  |             log.info("split的值为:{}", split); | 
 |  |  |  | 
 |  |  |             //定义一个集合,用与存没有执行的子任务ID | 
 |  |  |             List<Long> subIds = new ArrayList<>(); | 
 |  |  | 
 |  |  |                                 //说明是立即发送 | 
 |  |  |                                 ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO(); | 
 |  |  |                                 serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid()); | 
 |  |  |                                 log.error("缓存中serviceSubtask1的值为:{}", serviceSubtask1); | 
 |  |  |                                 log.info("缓存中serviceSubtask1的值为:{}", serviceSubtask1); | 
 |  |  |                                 List<String> list = new ArrayList<>(); | 
 |  |  |                                 List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1); | 
 |  |  |                                 for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) { | 
 |  |  |                                     list.add(serviceSubtask2.getId().toString()); | 
 |  |  |                                 } | 
 |  |  |                                 log.error("缓存中cache-0的值为:{}", list); | 
 |  |  |                                 log.info("缓存中cache-0的值为:{}", list); | 
 |  |  | //                                redisCache.setCacheListLeft("cache-0", list); | 
 |  |  |                                 redisCache.setCacheListLeftAndDistinct("cache-0", list); | 
 |  |  |                             } else { | 
 |  |  | 
 |  |  |                     subIds.clear(); | 
 |  |  |                     subIds.addAll(lssubIds); | 
 |  |  |                     lssubIds.clear(); | 
 |  |  |                 } | 
 |  |  |                 else if (descByCode.equals("多媒体")) { | 
 |  |  |                 } else if (descByCode.equals("多媒体")) { | 
 |  |  |                     //多媒体 | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 else if (descByCode.equals("纸质")) { | 
 |  |  |                 } else if (descByCode.equals("纸质")) { | 
 |  |  |                     //纸质 | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 else if (descByCode.equals("短信")) { | 
 |  |  |                 } else if (descByCode.equals("短信")) { | 
 |  |  |                     //短信 | 
 |  |  |                     //对url中两个参数加密 | 
 |  |  |                     RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); | 
 |  |  | 
 |  |  |                                 serviceOutPath.setParam1(taskId); | 
 |  |  |                                 serviceOutPath.setParam2(patid); | 
 |  |  |                                 serviceOutPath.setParam6(subId); | 
 |  |  | //                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString())); | 
 |  |  |                                 serviceOutPath.setParam3(ivrTask1.getTaskName()); | 
 |  |  |                                 serviceOutPath.setCreateTime(new Date()); | 
 |  |  |                                 iServiceOutPathService.insertServiceOutPath(serviceOutPath); | 
 |  |  | 
 |  |  |                                 serviceOutPath.setRadix(format); | 
 |  |  |                                 serviceOutPath.setUpdateTime(new Date()); | 
 |  |  |                                 iServiceOutPathService.updateServiceOutPath(serviceOutPath); | 
 |  |  | //                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"); | 
 |  |  |                                 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 | 
 |  |  |                                     sendMagParam.setContent("【新华医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!"); | 
 |  |  |                                 //需要通过模板ID去判断要发的内容是宣教还是通知 | 
 |  |  |                                 HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid()); | 
 |  |  |                                 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 | 
 |  |  |                                         sendMagParam.setContent("【新华医院】您好,邀请您填写出院宣教调查表,请点击" + sendMagParam.getUrl() + "查看。感谢您配合!"); | 
 |  |  |                                 } else { | 
 |  |  |                                     //通知 | 
 |  |  |                                     sendMagParam.setPhone(serviceSubtask.getPhone()); | 
 |  |  |                                     sendMagParam.setContent(heLibrary.getPreachcontent()); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                             //短信还需要模板 | 
 |  |  |                             String s = null; | 
 |  |  | 
 |  |  |                                 //丽水的短信发送方式 | 
 |  |  |                                 Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid()); | 
 |  |  |                                 String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid()); | 
 |  |  |                                 log.error("-----------token的值为:{}", token); | 
 |  |  |                                 log.info("-----------token的值为:{}", token); | 
 |  |  |                                 if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) { | 
 |  |  |                                     ServiceSubtask ss = new ServiceSubtask(); | 
 |  |  |                                     ss.setResult("error"); | 
 |  |  | 
 |  |  |                                     serviceSubtaskMapper.updateServiceSubtask(ss); | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 log.error("---------mq丽水短信发送入参address:{},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid()); | 
 |  |  |                                 log.info("---------mq丽水短信发送入参address:{},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid()); | 
 |  |  |                                 String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token); | 
 |  |  |                                 log.error("---------丽水短信发送结果:{}-------", dxCode); | 
 |  |  |                                 log.info("---------丽水短信发送结果:{}-------", dxCode); | 
 |  |  |                                 ObjectMapper objectMapper = new ObjectMapper(); | 
 |  |  |                                 Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class); | 
 |  |  |                                 String code = textParam.get("Code").toString(); | 
 |  |  | 
 |  |  |                             } | 
 |  |  |                             if (s.equals("true")) { | 
 |  |  |                                 //在子任务表里记录一下 | 
 |  |  |                                 log.error("serviceSubtask保存成功了吗?:{}", s); | 
 |  |  |                                 String uuid = UUID.randomUUID().toString(); | 
 |  |  |                                 serviceSubtask.setResult("success"); | 
 |  |  |                                 serviceSubtask.setRemark("短信发送成功"); | 
 |  |  | 
 |  |  |                     subIds.clear(); | 
 |  |  |                     subIds.addAll(lssubIds); | 
 |  |  |                     lssubIds.clear(); | 
 |  |  |                 } | 
 |  |  |                 else if (descByCode.equals("公众号")) { | 
 |  |  |                 } else if (descByCode.equals("公众号")) { | 
 |  |  |                     //公众号 | 
 |  |  |                     RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); | 
 |  |  |                     String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); |