You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
9.9 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String, String> 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<String> jzhs = afCollectTaskService.listJZHByDate(format, format1);
// int size = jzhs.size();
// log.info("-------本次采集数:" + size);
// if(size==0){
// oneDate=twoDate;
// log.info("------------采集结束-----------------");
// return;
// }
// Object[] params;
// List<String> keys = new ArrayList<>();
// keys.add("action");
// keys.add("message");
// XmlUtils xmlUtils;
// List<String> zyDirectory = (List<String>) 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<String, Object> headMap = new HashMap<>();
// headMap.put("Content-Type", "application/json");
// for (String jzh : jzhs) {
// try {
// params = new Object[]{"flow-mra-queryencounterpdf", "<Req>\n" +
// "<Params>\n" +
// "<ENCT_ID>" + jzh + "</ENCT_ID>\n" +
// "</Params>\n" +
// "</Req>"};
// res = requestFunctionWebService(params, url, methodName, namespance, keys);
// log.info("返回值:" + res);
// xmlUtils = new XmlUtils(new ByteArrayInputStream(res.getBytes("UTF-8")));
// element = xmlUtils.getElement(zyDirectory);
// List<Element> 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<ReportDownScanFileDto> 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<String> 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;
}
}