|
|
|
@ -1,21 +1,68 @@
|
|
|
|
|
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.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
@ -37,4 +84,141 @@ public class MyScheduling {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//10分钟执行一次
|
|
|
|
|
@Scheduled(fixedRate = 1000 * 60 * 30)
|
|
|
|
|
public void ruyuan() {
|
|
|
|
|
log.info("----------开始采集------------");
|
|
|
|
|
log.info("-----采集时间:"+oneDate);
|
|
|
|
|
Date twoDate = new Date();
|
|
|
|
|
//获取jzh列表
|
|
|
|
|
List<String> jzhs = afCollectTaskService.listJZHByDate(oneDate, twoDate);
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|