|
|
|
|
package com.docus.bgts.config;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.docus.bgts.entity.ReportDownDto;
|
|
|
|
|
import com.docus.bgts.entity.ReportDownPatientDto;
|
|
|
|
|
import com.docus.bgts.entity.ReportDownScanFileDto;
|
|
|
|
|
import com.docus.bgts.enums.Codes;
|
|
|
|
|
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 com.docus.bgts.utils.XmlUtils;
|
|
|
|
|
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.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
|
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
|
|
|
|
|
|
import org.dom4j.Element;
|
|
|
|
|
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.ByteArrayInputStream;
|
|
|
|
|
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 Logger logger = LogManager.getLogger(MyScheduling.class);
|
|
|
|
|
|
|
|
|
|
//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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|