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

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;
}
}