| | |
| | | import com.smartor.common.MtSubmitSmUtil; |
| | | import com.smartor.common.QwenLLMUtil; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO; |
| | | import com.smartor.domain.entity.ServiceSubtaskEntity; |
| | | import com.smartor.mapper.*; |
| | | import com.smartor.service.*; |
| | |
| | | ISysDeptService sysDeptService; |
| | | |
| | | @Autowired |
| | | IPatMedOuthospService patMedOuthospService; |
| | | IServiceSubtaskDetailTraceService serviceSubtaskDetailTraceService; |
| | | |
| | | @Autowired |
| | | ISvyTaskTemplateService svyTaskTemplateService; |
| | |
| | | private String active; |
| | | @Autowired |
| | | private SysConfigMapper sysConfigMapper; |
| | | |
| | | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { |
| | | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); |
| | | } |
| | | |
| | | public void ryParams(String params) { |
| | | System.out.println("执行有参方法:" + params); |
| | | } |
| | | |
| | | public void ryNoParams() { |
| | | System.out.println("执行无参方法"); |
| | | } |
| | | |
| | | public void importData() { |
| | | String filePath = "C:\\Users\\86176\\Desktop\\新建文本文档 4.txt"; // 替换为你的文件路径 |
| | |
| | | serviceThirdData.setCreateTime(new Date()); |
| | | iServiceThirdDataService.queryList(serviceThirdData); |
| | | } |
| | | |
| | | /** |
| | | * 定时发送SLTD满意度异常信息 |
| | | */ |
| | | public void sendSLTDMYDExceptInfo() { |
| | | //1.获取发送人工号 |
| | | ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO(); |
| | | subtaskDetailTraceVO.setHandleFlag("0"); |
| | | List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO); |
| | | // 把 dutyDeptPersonCode 整理到 list 中(如果多个人用逗号分割,则展开并去重) |
| | | List<String> dutyDeptPersonCodeList = serviceSubtaskDetailTraces.stream().map(ServiceSubtaskDetailTrace::getDutyDeptPersonCode).filter(StringUtils::isNotBlank).flatMap(code -> Arrays.stream(code.split(","))).map(String::trim).filter(StringUtils::isNotBlank).distinct() // 去重 |
| | | .collect(Collectors.toList()); |
| | | // 获取“省立同德满意度异常内容提醒" |
| | | SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("sltd.myd.send.except.contont"); |
| | | String exceptContent = sysConfig.getConfigValue(); |
| | | |
| | | // 获取“省立同德满意度异常内容提醒测试人工号” |
| | | String testPerson = sysConfigMapper.checkConfigKeyUnique("sltd.myd.send.test.person").getConfigValue(); |
| | | if (StringUtils.isNotBlank(testPerson)) { |
| | | String[] split = testPerson.split(","); |
| | | if (CollectionUtils.isEmpty(dutyDeptPersonCodeList)) dutyDeptPersonCodeList = Arrays.asList(split); |
| | | else dutyDeptPersonCodeList.addAll(Arrays.asList(split)); |
| | | } |
| | | |
| | | if (CollectionUtils.isNotEmpty(dutyDeptPersonCodeList)) { |
| | | for (String dutyDeptPersonCode : dutyDeptPersonCodeList) { |
| | | log.info("【sendSLTDMYDExceptInfo】发送人工号:{}", dutyDeptPersonCode); |
| | | String data = MessageSend.sendMsg(exceptContent, "7", dutyDeptPersonCode, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 定时处理外链的数据 |
| | |
| | | serviceSLTDInhospReqVO.setCurrent(outpPage); |
| | | serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE); |
| | | log.info("【dealHisData】省立同德“药品数据”采集第{}页数据", outpPage); |
| | | Boolean b = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO); |
| | | Boolean b = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO); |
| | | log.info("【dealHisData】省立同德“药品数据”采集结果:{}", b); |
| | | outpPage++; |
| | | } |
| | |
| | | //获取到sendstate=3 并且 visit_time为小于等于今天的subtask |
| | | ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity(); |
| | | serviceSubtaskVO.setSendstate(3L); |
| | | serviceSubtaskVO.setVisitTime(new Date()); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO); |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | //根据当前的执行方式,获取下一种执行方式 |
| | | ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); |
| | | serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); |
| | | serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); |
| | | serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); |
| | | List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); |
| | | //获取当前执行方式的序号 |
| | | Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst(); |
| | | Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst(); |
| | | if (currentSort.isPresent()) { |
| | | //1先检查一下,是不是有执行状态是完成的(怕之前已经有完的了,没有将servuce_subtask的状态改成功,这里再检查一下) |
| | | boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9")); |
| | | if (finishState) { |
| | | serviceSubtask.setSendstate(6L); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | continue; |
| | | } |
| | | |
| | | //2判断一下,当前的sort是不是等于需要执行的总个数,如果等于的话,说明是最后一个,直接将servuce_subtask的状态改成5,执行失败就行了 |
| | | Long cs = currentSort.get(); |
| | | if (cs.equals(serviceSubtaskPreachforms.size())) { |
| | | serviceSubtask.setSendstate(7L); |
| | | serviceSubtask.setRemark("处理补偿任务,当前处理最后补偿,全部执行失败(超时)"); |
| | | |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | //修改发送方式的状态为失败 |
| | | serviceSubtaskPreachform.setSendstate("5"); |
| | | serviceSubtaskPreachform.setId(id.get()); |
| | | |
| | | serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform); |
| | | continue; |
| | | } |
| | | |
| | | //3.不是最后一个,获取到下一个执行方式(因为都是在今天执行,那就直接发出去就完了) |
| | | sfHandlle(serviceSubtask); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 长期任务发送 |
| | | */ |
| | | public void longTaskSendTest(Long subId) { |
| | | //获取任务信息 |
| | | ServiceTask st = new ServiceTask(); |
| | | st.setDelFlag("0"); |
| | | st.setLongTask(1); |
| | | List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st); |
| | | log.info("【longTaskSend】获取到{}个长期任务", serviceTasks.size()); |
| | | for (ServiceTask serviceTask : serviceTasks) { |
| | | CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ(); |
| | | commonTaskcallMQ.setTaskid(serviceTask.getTaskid()); |
| | | commonTaskcallMQ.setPreachform(serviceTask.getPreachform()); |
| | | commonTaskcallMQ.setSendType("2"); |
| | | |
| | | //通过任务ID拿到患者信息,并且随访时间得是今天之前的 |
| | | ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity(); |
| | | serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid()); |
| | | serviceSubtaskVO.setSendstate(2L); |
| | | serviceSubtaskVO.setIsVisitAgain(1); |
| | | serviceSubtaskVO.setSubId(subId); |
| | | serviceSubtaskVO.setVisitTime(new Date()); |
| | | List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO); |
| | | for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { |
| | | sfHandlle(serviceSubtask); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 处理补偿任务 |
| | | */ |
| | | public void compensateTaskTest(Long subId) { |
| | | //获取到sendstate=3 并且 visit_time为小于等于今天的subtask |
| | | ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity(); |
| | | serviceSubtaskVO.setSendstate(3L); |
| | | serviceSubtaskVO.setSubId(subId); |
| | | serviceSubtaskVO.setVisitTime(new Date()); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO); |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | |
| | | //省立同德的短信发送方式 |
| | | String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); |
| | | 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")) { |
| | | // 解析 result=0&description=成功&faillist= 格式(result=0成功,1失败) |
| | | log.info("【sfHandlle】省立同德短信发送返回:{}", data); |
| | | String[] pairs = data.split("&"); |
| | | String resultVal = null; |
| | | for (String pair : pairs) { |
| | | String[] kv = pair.split("=", 2); |
| | | if ("result".equals(kv[0])) { |
| | | resultVal = kv.length > 1 ? kv[1] : null; |
| | | break; |
| | | } |
| | | } |
| | | if ("0".equals(resultVal)) { |
| | | isSuccess = "true"; |
| | | } |
| | | } |
| | |
| | | String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); |
| | | String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); |
| | | String url = null; |
| | | url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + |
| | | "¶m2=" + patid + |
| | | "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + |
| | | "¶m5=false" + |
| | | "$param6=" + subId; |
| | | url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false" + "$param6=" + subId; |
| | | |
| | | ServiceOutPath serviceOutPath = new ServiceOutPath(); |
| | | serviceOutPath.setParam1(taskId); |