package com.docus.bgts.config; import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.facade.IMrReportErrorService; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import lombok.extern.slf4j.Slf4j; import org.apache.axis.client.Call; import org.apache.axis.encoding.XMLType; import org.apache.axis.utils.ByteArrayOutputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.io.PrintStream; import java.net.URISyntaxException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Slf4j @Component public class MyScheduling { public static Date oneDate; public static String namespance = ""; private static String methodName = ""; private static String url; private static String pdfUrl; static { url = String.valueOf(FileUtils.getJsonByName("zyUrl")); methodName = String.valueOf(FileUtils.getJsonByName("zyMethod")); pdfUrl = String.valueOf(FileUtils.getJsonByName("pdfUrl")); namespance = String.valueOf(FileUtils.getJsonByName("zyNamespance")); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { oneDate = fmt.parse(String.valueOf(FileUtils.getJsonByName("zysj"))); } catch (ParseException e) { e.printStackTrace(); } } @Autowired private IMrReportErrorService mrReportErrorService; @Autowired private IAfCollectTaskService afCollectTaskService; @Value("${beat.url}") private String beatUrl; private final Logger logger = LoggerFactory.getLogger(getClass()); //10分钟执行一次 @Scheduled(fixedRate = 1000 * 60 * 5) public void beat() { logger.info("------------心跳开始---------------"); Map params = new HashMap<>(); params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid"))); try { HttpUtils.get(beatUrl, params); } catch (URISyntaxException e) { e.printStackTrace(); logger.info("心跳推送出错,可能是住院服务没有开启"); } finally { logger.info("-------------心跳结束---------------"); } } //10分钟执行一次 // @Scheduled(fixedRate = 1000 * 60 * 60 * 5) // public void ruyuan() { // log.info("----------开始采集------------"); // SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String format = fmt.format(oneDate); // log.info("-----采集时间:开始时间:"+ format); // Date twoDate = new Date(); // String format1 = fmt.format(twoDate); // log.info("-----采集时间:结束时间:"+ format1); // // //获取jzh列表 // List jzhs = afCollectTaskService.listJZHByDate(format, format1); // int size = jzhs.size(); // log.info("-------本次采集数:" + size); // if(size==0){ // oneDate=twoDate; // log.info("------------采集结束-----------------"); // return; // } // Object[] params; // List keys = new ArrayList<>(); // keys.add("action"); // keys.add("message"); // XmlUtils xmlUtils; // List zyDirectory = (List) FileUtils.getJsonByName("zyDirectory"); // String assortid = String.valueOf(FileUtils.getJsonByName("assortid")); // String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); // String filesource = String.valueOf(FileUtils.getJsonByName("filesource")); // String filestoragetype = String.valueOf(FileUtils.getJsonByName("filestoragetype")); // String res; // Element element; // Map headMap = new HashMap<>(); // headMap.put("Content-Type", "application/json"); // for (String jzh : jzhs) { // try { // params = new Object[]{"flow-mra-queryencounterpdf", "\n" + // "\n" + // "" + jzh + "\n" + // "\n" + // ""}; // res = requestFunctionWebService(params, url, methodName, namespance, keys); // log.info("返回值:" + res); // xmlUtils = new XmlUtils(new ByteArrayInputStream(res.getBytes("UTF-8"))); // element = xmlUtils.getElement(zyDirectory); // List items = element.elements("ITEM"); // if (items == null || items.size() <= 0) { // throw new RuntimeException("查询到的信息不存在"); // } // ReportDownDto reportDownDto = new ReportDownDto(); // reportDownDto.setCollectorid(collectorid); // reportDownDto.setAssortid(assortid); // // ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto(); // reportDownPatientDto.setJzh(jzh); // reportDownDto.setPatient(reportDownPatientDto); // List scanFileDtos = new ArrayList<>(); // ReportDownScanFileDto reportDownScanFileDto; // // for (Element item : items) { // Element pdfId = item.element("PDF_ID"); // if (pdfId != null && StringUtils.isNotBlank(pdfId.getText())) { // //采集流水号 // String pdfIdText = pdfId.getText(); // //文件标题 // String fileTitle = item.element("MED_REC_CAT_NAME").getText(); // //url地址 // String pdf = pdfUrl + pdfIdText; // // reportDownScanFileDto = new ReportDownScanFileDto(); // reportDownScanFileDto.setFiletitle(fileTitle); // reportDownScanFileDto.setFilesource(Integer.parseInt(filesource)); // reportDownScanFileDto.setFilestoragetype(Integer.parseInt(filestoragetype)); // reportDownScanFileDto.setSerialnum(pdfIdText); // reportDownScanFileDto.setDownurl(pdf); // scanFileDtos.add(reportDownScanFileDto); // } else { // log.info("记账号:", jzh + "不存在pdfId"); // size--; // throw new RuntimeException("记账号:" + jzh + "不存在pdfId"); // } // } // log.info("文件信息:" + scanFileDtos); // reportDownDto.setScanfiles(scanFileDtos); // afCollectTaskService.insert(reportDownDto); // String post = ""; // logger.info("--------执行上传功能----------"); // Map paramMap = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); // logger.info("上传参数:" + paramMap); // post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, paramMap); //// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap); // if (StringUtils.isBlank(post)) { // logger.info("--------上传时出现错误,可能是文件服务没有启动----------"); // throw new RuntimeException("上传时出现错误,可能是文件服务没有启动"); // } // Map resMap = JSON.parseObject(post, Map.class); // if (String.valueOf(resMap.get("code")).equals("500")) { // throw new RuntimeException(String.valueOf(resMap.get("msg"))); // } else { // logger.info("----------执行成功,当前最后更新日期" + twoDate + "-----------"); // } // // } catch (Exception e) { // log.info(e.getMessage()); // e.printStackTrace(); // size--; // mrReportErrorService.insert(jzh); // } // } // log.info("-------本次成功采集数:" + size); //// oneDate = twoDate; // } private String requestFunctionWebService(Object[] params, String url, String methodName, String namespance, List parameterNames) { String result = ""; if (null != params) { try { org.apache.axis.client.Service service = new org.apache.axis.client.Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(namespance, methodName)); for (int i = 0; i < parameterNames.size(); i++) { call.addParameter(parameterNames.get(i), XMLType.XSD_STRING, ParameterMode.IN);//接口的参数 } call.setReturnType(XMLType.XSD_STRING);//设置返回类型 result = (String) call.invoke(params); } catch (Exception e) { e.printStackTrace(); //方法名 ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos)); String exception = baos.toString(); log.error("requestFunctionWebService请求接口异常:" + exception); } } return result; } }