Bläddra i källkod

hos-rest修改httpClientKit

Airhead 8 år sedan
förälder
incheckning
abb3601822

+ 40 - 46
hos-rest/src/main/java/com/yihu/hos/rest/common/http/EHRHttpHelper.java

@ -1,17 +1,15 @@
package com.yihu.hos.rest.common.http;
package com.yihu.hos.rest.common.http;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.httpclient.HttpClientUtil;
import com.yihu.hos.core.httpclient.HttpResponse;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import org.apache.http.Header;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.HttpClients;
@ -21,11 +19,9 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLContext;
import java.io.*;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Properties;
import java.util.Properties;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPInputStream;
@ -79,15 +75,15 @@ public class EHRHttpHelper {
    /**************************
    /**************************
     * Get方法
     * Get方法
     ******************************************/
     ******************************************/
    public static HttpResponse get(String url) {
    public static HTTPResponse get(String url) {
        return get(url, null, null);
        return get(url, null, null);
    }
    }
    public static HttpResponse get(String url, Map<String, Object> params) {
    public static HTTPResponse get(String url, Map<String, String> params) {
        return get(url, params, null);
        return get(url, params, null);
    }
    }
    public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header) {
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return get(url, params, header, defaultSSL);
            return get(url, params, header, defaultSSL);
        } else {
        } else {
@ -96,7 +92,7 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
        if (isCheck) {
            return get(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return get(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
        } else {
        } else {
@ -104,27 +100,27 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
        return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    }
    public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
        return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
        return HttpClientKit.request("GET", url, params, header);
    }
    }
    /**************************
    /**************************
     * Post方法
     * Post方法
     ******************************************/
     ******************************************/
    public static HttpResponse post(String url) {
    public static HTTPResponse post(String url) {
        return post(url, null, null);
        return post(url, null, null);
    }
    }
    public static HttpResponse post(String url, Map<String, Object> params) {
    public static HTTPResponse post(String url, Map<String, String> params) {
        return post(url, params, null);
        return post(url, params, null);
    }
    }
    public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header) {
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return post(url, params, header, defaultSSL);
            return post(url, params, header, defaultSSL);
        } else {
        } else {
@ -133,7 +129,7 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
        if (isCheck) {
            return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
        } else {
        } else {
@ -141,45 +137,44 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
        return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    }
    public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
        return HttpClientUtil.request("POST", url, params, header, ssl, user, password);
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
        return HttpClientKit.request("POST", url, params, header);
    }
    }
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, String filePath, Map<String, Object> header) {
        File file = new File(filePath);
    public static HTTPResponse postFile(String url, Map<String, String> formParams, String filePath, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL, defaultHttpUser, defaultHttpPassword, header);
            return HttpClientKit.postFile(url, filePath, formParams);
        } else {
        } else {
            //默认http不走ssl和用户密码
            //默认http不走ssl和用户密码
            return HttpClientUtil.postFile(url, file, formParams, null, defaultHttpUser, defaultHttpPassword, header);
            return HttpClientKit.postFile(url, filePath, formParams);
        }
        }
    }
    }
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, File file, Map<String, Object> header) {
    public static HTTPResponse postFile(String url, Map<String, String> formParams, File file, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL, defaultHttpUser, defaultHttpPassword, header);
            return HttpClientKit.postFile(url, file.getAbsolutePath(), formParams);
        } else {
        } else {
            //默认http不走ssl和用户密码
            //默认http不走ssl和用户密码
            return HttpClientUtil.postFile(url, file, formParams, null, defaultHttpUser, defaultHttpPassword, header);
            return HttpClientKit.postFile(url, file.getAbsolutePath(), formParams);
        }
        }
    }
    }
    /**************************
    /**************************
     * Put方法
     * Put方法
     ******************************************/
     ******************************************/
    public static HttpResponse put(String url) {
    public static HTTPResponse put(String url) {
        return put(url, null, null);
        return put(url, null, null);
    }
    }
    public static HttpResponse put(String url, Map<String, Object> params) {
    public static HTTPResponse put(String url, Map<String, String> params) {
        return put(url, params, null);
        return put(url, params, null);
    }
    }
    public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header) {
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return put(url, params, header, defaultSSL);
            return put(url, params, header, defaultSSL);
        } else {
        } else {
@ -188,7 +183,7 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
        if (isCheck) {
            return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
        } else {
        } else {
@ -196,27 +191,27 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
        return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    }
    public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
        return HttpClientUtil.request("PUT", url, params, header, ssl, user, password);
        return HttpClientKit.request("PUT", url, params, header);
    }
    }
    /**************************
    /**************************
     * Delete方法
     * Delete方法
     **************************************/
     **************************************/
    public static HttpResponse delete(String url) {
    public static HTTPResponse delete(String url) {
        return delete(url, null, null);
        return delete(url, null, null);
    }
    }
    public static HttpResponse delete(String url, Map<String, Object> params) {
    public static HTTPResponse delete(String url, Map<String, String> params) {
        return delete(url, params, null);
        return delete(url, params, null);
    }
    }
    public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header) {
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
        if (url.startsWith("https")) {
            return delete(url, params, header, defaultSSL);
            return delete(url, params, header, defaultSSL);
        } else {
        } else {
@ -225,7 +220,7 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
        if (isCheck) {
            return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
        } else {
        } else {
@ -233,18 +228,18 @@ public class EHRHttpHelper {
        }
        }
    }
    }
    public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
        return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    }
    public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
        return HttpClientUtil.request("DELETE", url, params, header, ssl, user, password);
        return HttpClientKit.request("DELETE", url, params, header);
    }
    }
    public static String getWebPage(String url) {
    public static String getWebPage(String url) {
        String returnString = "";
        String returnString = "";
        HttpResponse re = new HttpResponse();
        HTTPResponse re = new HTTPResponse(200, "");
        CloseableHttpResponse response = null;
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = HttpClients.custom()
        CloseableHttpClient httpclient = HttpClients.custom()
                .setSSLSocketFactory(defaultSSL)
                .setSSLSocketFactory(defaultSSL)
@ -277,8 +272,7 @@ public class EHRHttpHelper {
                }
                }
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            re.setStatusCode(201);
            re.setBody(e.getMessage());
            re = new HTTPResponse(201, e.getMessage());
            e.printStackTrace();
            e.printStackTrace();
        } finally {
        } finally {
            try {
            try {

+ 223 - 217
hos-rest/src/main/java/com/yihu/hos/rest/controllers/QLCController.java

@ -1,7 +1,9 @@
package com.yihu.hos.rest.controllers;
package com.yihu.hos.rest.controllers;
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
import com.yihu.hos.core.constants.CoreConstant;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.http.HttpClientKit;
import com.yihu.hos.rest.common.configuration.CrawlerConfiguration;
import com.yihu.hos.rest.common.configuration.CrawlerConfiguration;
import com.yihu.hos.rest.common.configuration.QLCConfiguration;
import com.yihu.hos.rest.common.configuration.QLCConfiguration;
import com.yihu.wsgw.api.ServiceBus;
import com.yihu.wsgw.api.ServiceBus;
@ -35,19 +37,45 @@ import java.util.Map;
@RequestMapping(value = "/api/v1.0/qlc", produces = {"application/json;charset=UTF-8"})//
@RequestMapping(value = "/api/v1.0/qlc", produces = {"application/json;charset=UTF-8"})//
@Api(protocols = "http", value = "hibernate", hidden = false, description = "ȫ���̶Խӽӿ�")
@Api(protocols = "http", value = "hibernate", hidden = false, description = "ȫ���̶Խӽӿ�")
public class QLCController {
public class QLCController {
    final Logger logger = LoggerFactory.getLogger(QLCController.class);
    private DBHelper dbHelper = new DBHelper();
    private DBHelper dbHelper = new DBHelper();
    @Autowired
    @Autowired
    private QLCConfiguration qlcConfiguration;
    private QLCConfiguration qlcConfiguration;
    @Autowired
    @Autowired
    private CrawlerConfiguration crawlerConfiguration;
    private CrawlerConfiguration crawlerConfiguration;
    final Logger logger = LoggerFactory.getLogger(QLCController.class);
    /**
     * xml轉json
     *
     * @param xml
     * @return
     */
    private static String XML2JsonData(String xml) throws Exception {
        JSONArray object = new JSONArray();
        try {
            SAXReader saxReader = new SAXReader(false);
            Document document = DocumentHelper.parseText(xml);
            Element root = document.getRootElement();
            List<Element> elements = root.elements("Data");
            for (Element element : elements) {
                List<Element> elementTemps = element.elements();
                JSONObject jo = new JSONObject();
                for (Element elementTemp : elementTemps) {
                    if (elementTemp.hasContent()) {
                        jo.put(elementTemp.getName(), elementTemp.getText());
                    }
                }
                object.add(jo);
            }
        } catch (Exception e) {
            throw new Exception("返回的xml转JSON错误");
        }
        return object.toString();
    }
    /**
    /**
     * 院方_挂号事件推送
     * 院方_挂号事件推送
     *http://localhost:8081/gateway/transfer?api=17&param={EventType:"1",EventNo:"1",CardType:"1",CardNo:"6001",PatientId:"10001",HospitalId:"1026333"}&requestId="目前没用随便写"
     * http://localhost:8081/gateway/transfer?api=17&param={EventType:"1",EventNo:"1",CardType:"1",CardNo:"6001",PatientId:"10001",HospitalId:"1026333"}&requestId="目前没用随便写"
     */
     */
    @RequestMapping(value = "/queryUserInfo", method = RequestMethod.POST)
    @RequestMapping(value = "/queryUserInfo", method = RequestMethod.POST)
    @ApiOperation(value = "挂号事件推送", response = Object.class, produces = "application/json", notes = "挂号事件推送")
    @ApiOperation(value = "挂号事件推送", response = Object.class, produces = "application/json", notes = "挂号事件推送")
@ -80,136 +108,6 @@ public class QLCController {
        return paramMap;
        return paramMap;
    }
    }
    /**
     * 得到挂号信息的病人基本信息入mongo
     * @param CardType
     * @param CardNo
     * @param HospitalId
     * @return 返回就诊时间RegDate  yyyy-MM-dd HH:mm:ss
     * @throws Exception
     */
    private String getRegAndUserInfo(String CardType, String CardNo, String HospitalId) throws Exception {
        //-----------------------------得到挂号信息--start
        //拼凑RPC参数
        String regDate;
//        String param = "<Req><TransactionCode>5003</TransactionCode><Data><CardType>"+CardType+"</CardType><CardNo>"+CardNo+"</CardNo><IdCardNo></IdCardNo><OrderId></OrderId><ClinicCard></ClinicCard><TimeSlice></TimeSlice><StartTime></StartTime><EndTime></EndTime><RegFlag>2</RegFlag></Data></Req>";
//        String apiparam = "{\"ChannelId\"=\"" + qlcConfiguration.getChannelId() + "\"," +
//                "\"ParamType\"=1," +
//                "\"Params\"=\"" + param + "\"," +
//                "\"Guid\"=\"00000001111111\"," +
//                "\"V\"=\"3.0.0\"," +
//                "\"OutType\"=1," +
//                "\"HospitalId\"=\"" + HospitalId + "\"}";
//        Object s = getRPCData(qlcConfiguration.getIp() + CoreConstant.COLON + qlcConfiguration.getPort(), qlcConfiguration.getAppId(), "ZEUS.HosHOPWs.QueryRegInfo", apiparam);
        Object s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
                "<Resp> \n" +
                "<TransactionCode></TransactionCode> \n" +
                "<RespCode>10000</RespCode>\n" +
                "<RespMessage>成功</RespMessage>\n" +
                "<Data>\n" +
                "  <OrderId>1026333</OrderId>\n" +
                "  <IdCardNo>350181199101251517</IdCardNo>\n" +
                "  <BirthDay>1991-01-25</BirthDay>\n" +
                "  <Mobile>15805935227</Mobile>\n" +
                "  <Name>zlf</Name>\n" +
                "  <Sex>男</Sex>\n" +
                "  <Address></Address>\n" +
                "  <ClinicCard>6001</ClinicCard>\n" +
                "  <ClinicName></ClinicName>\n" +
                "  <DoctorName></DoctorName>\n" +
                "  <DoctorCode></DoctorCode>\n" +
                "  <DeptCode></DeptCode>\n" +
                "  <DeptName></DeptName>\n" +
                "  <PayFee></PayFee>\n" +
                "  <RegFee></RegFee>\n" +
                "  <ClinicFee></ClinicFee>\n" +
                "  <OtherFee></OtherFee>\n" +
                "  <OperatorId></OperatorId>\n" +
                "  <OperatorName></OperatorName>\n" +
                "  <RegDate>2016-08-23 17:00:00</RegDate>\n" +
                "  <TimeSlice></TimeSlice>\n" +
                "  <SqNo></SqNo>\n" +
                "  <Remark></Remark>\n" +
                "<RegFlag>true</RegFlag>\n" +
                "</Data>\n" +
                "</Resp>";
        //解析xml
        Document document = DocumentHelper.parseText(s.toString());
        Element root = document.getRootElement();
        String respCode=root.element("RespCode").getText();
        if ("10000".equals(respCode)) {
            //調用接口存入mongo--挂号信息
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("dataset", "HDSC01_02");
            params.put("data", XML2JsonData(root.asXML()));
            params.put("orgCode", HospitalId);
            String storageUrl = HttpClientUtil.getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
            String storageInfo = HttpClientUtil.doPost(storageUrl, params, null, null);
            monogoUrlValid(storageInfo, "挂号信息mongo入库失败");
            //得到时间 yyyy-MM-dd
            regDate=root.element("Data").element("RegDate").getText();
            //转换成 yyyy-MM-dd HH:mm:ss
            regDate = DateUtil.changeFormat(regDate, DateUtil.DEFAULT_DATE_YMD_FORMAT, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        } else {
            throw new Exception(s.toString());
        }
        //-----------------------------得到挂号信息--end
        //-----------------------------得到人口学信息--start
        //拼凑RPC参数
//        param = "<Req><TransactionCode>5003</TransactionCode><Data><CardType>"+CardType+"</CardType><CardNo>"+CardNo+"</CardNo><Mobile>123</Mobile><PatientId></PatientId></Data></Req>";
//        apiparam = "{\"ChannelId\"=\"" + qlcConfiguration.getChannelId() + "\"," +
//                "\"ParamType\"=1," +
//                "\"Params\"=\"" + param + "\"," +
//                "\"Guid\"=\"00000001111111\"," +
//                "\"V\"=\"3.0.0\"," +
//                "\"OutType\"=1," +
//                "\"HospitalId\"=\"" + HospitalId + "\"}";
//        s = getRPCData(qlcConfiguration.getIp() + CoreConstant.COLON + qlcConfiguration.getPort(), qlcConfiguration.getAppId(), "ZEUS.HosHOPWs.QueryUserInfo", apiparam);
        s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
                "<Resp>\n" +
                "<TransactionCode></TransactionCode>\n" +
                "<RespMessage>成功</RespMessage>\n" +
                "<RespCode>10000</RespCode>\n" +
                "<Data>\n" +
                "<PatientId>10001</PatientId>\n" +
                "<ClinicCard>6001</ClinicCard>\n" +
                "<Name>zlf</Name>\n" +
                "<Mobile>123456</Mobile>\n" +
                "<McardNo>6001</McardNo>\n" +
                "<Address>Address</Address>\n" +
                "<Sex>男</Sex>\n" +
                "<Fee>100</Fee>\n" +
                "<BirthDay>1991.1.25</BirthDay>\n" +
                "<Country>中国</Country>\n" +
                "<Nation>汉</Nation>\n" +
                "<BloodCode1>A</BloodCode1>\n" +
                "<BloodCode2></BloodCode2>\n" +
                "<Allergens></Allergens>\n" +
                "<IdCardId>350181199101251517</IdCardId>\n" +
                "</Data>\n" +
                "</Resp>";
        //解析xml
        document = DocumentHelper.parseText(s.toString());
        root = document.getRootElement();
        respCode=root.element("RespCode").getText();
        Map<String, Object> params = new HashMap<String, Object>();
        if ("10000".equals(respCode)) {
            //調用接口存入mongo--人口学信息
            params.put("dataset", "HDSA00_01");
            params.put("data", XML2JsonData(root.asXML()));
            params.put("orgCode", HospitalId);
            String storageUrl = HttpClientUtil.getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
            String storageInfo = HttpClientUtil.doPost(storageUrl, params, null, null);
            monogoUrlValid(storageInfo, "人口学信息mongo入库失败");
        } else {
            throw new Exception(s.toString());
        }
        //-----------------------------得到人口学信息--end
        return regDate;
    }
    /**
    /**
     * 院方_检查/检验报告单推送---数据说明
     * 院方_检查/检验报告单推送---数据说明
     * 检验:http://localhost:8081/gateway/transfer?api=18&param={CardType:"1",CardNo:"10003",ReportType:"1",ReportId:"123",State:"2",HospitalId:"1026333"}&requestId="目前没用随便写"
     * 检验:http://localhost:8081/gateway/transfer?api=18&param={CardType:"1",CardNo:"10003",ReportType:"1",ReportId:"123",State:"2",HospitalId:"1026333"}&requestId="目前没用随便写"
@ -224,7 +122,7 @@ public class QLCController {
                                  @ApiParam(value = "报告单状态1 报告未出 2报告已出", required = true) @RequestParam(value = "State") String State,
                                  @ApiParam(value = "报告单状态1 报告未出 2报告已出", required = true) @RequestParam(value = "State") String State,
                                  @ApiParam(value = "医院ID", required = true) @RequestParam(value = "HospitalId") String HospitalId,
                                  @ApiParam(value = "医院ID", required = true) @RequestParam(value = "HospitalId") String HospitalId,
                                  @ApiParam(value = "就诊时间", required = true) @RequestParam(value = "RegDate") String RegDate) {
                                  @ApiParam(value = "就诊时间", required = true) @RequestParam(value = "RegDate") String RegDate) {
        Map<String,Object> params = new HashMap<String, Object>();
        Map<String, String> params = new HashMap<>();
        Object s = null;
        Object s = null;
        try {
        try {
            isEmpty(CardType, "CardType is null");
            isEmpty(CardType, "CardType is null");
@ -304,64 +202,64 @@ public class QLCController {
            Element root = document.getRootElement();
            Element root = document.getRootElement();
            if ("10000".equals(root.element("RespCode").getText())) {
            if ("10000".equals(root.element("RespCode").getText())) {
                ///分割數據
                ///分割數據
                List<Element> elements=root.elements("Data");
                JSONArray jsonArray1=new JSONArray();//檢驗圖片報告單
                for(Element element:elements){
                    JSONArray jsonArray=new JSONArray();//檢驗主表
                    List<Element> elementTemps=element.elements();
                    JSONObject jo=new JSONObject();
                List<Element> elements = root.elements("Data");
                JSONArray jsonArray1 = new JSONArray();//檢驗圖片報告單
                for (Element element : elements) {
                    JSONArray jsonArray = new JSONArray();//檢驗主表
                    List<Element> elementTemps = element.elements();
                    JSONObject jo = new JSONObject();
                    //檢驗主表
                    //檢驗主表
                    for(Element elementTemp:elementTemps){
                        if(elementTemp.hasContent()){
                            jo.put(elementTemp.getName(),elementTemp.getText());
                    for (Element elementTemp : elementTemps) {
                        if (elementTemp.hasContent()) {
                            jo.put(elementTemp.getName(), elementTemp.getText());
                        }
                        }
                        //檢驗圖片報告單
                        //檢驗圖片報告單
                        if("Data_1".equals(elementTemp.getName())){
                            JSONObject jo1=new JSONObject();
                            List<Element> elementTemps1=elementTemp.elements();
                            for(Element elementTemp1:elementTemps1){
                                if(elementTemp1.hasContent()){
                                    jo1.put(elementTemp1.getName(),elementTemp1.getText());
                        if ("Data_1".equals(elementTemp.getName())) {
                            JSONObject jo1 = new JSONObject();
                            List<Element> elementTemps1 = elementTemp.elements();
                            for (Element elementTemp1 : elementTemps1) {
                                if (elementTemp1.hasContent()) {
                                    jo1.put(elementTemp1.getName(), elementTemp1.getText());
                                }
                                }
                            }
                            }
                            jsonArray1.add(jo1);
                            jsonArray1.add(jo1);
                        }
                        }
                    }
                    }
                    String evenNo="";
                    if(StringUtils.isEmpty(jo.get("ClinicNo"))){
                        evenNo=jo.get("HosUserNo").toString();
                    }else{
                        evenNo=jo.get("ClinicNo").toString();
                    String evenNo = "";
                    if (StringUtils.isEmpty(jo.get("ClinicNo"))) {
                        evenNo = jo.get("HosUserNo").toString();
                    } else {
                        evenNo = jo.get("ClinicNo").toString();
                    }
                    }
                    jsonArray.add(jo);
                    jsonArray.add(jo);
                    if(ReportType.equals("1")){
                    if (ReportType.equals("1")) {
                        //检验报告
                        //检验报告
                        //上傳主表
                        //上傳主表
                        addMongo("HDSD02_01", evenNo, CardNo, HospitalId, jsonArray);
                        addMongo("HDSD02_01", evenNo, CardNo, HospitalId, jsonArray);
                        //给每个细表都添加Even_No
                        //给每个细表都添加Even_No
                        for(Object o:jsonArray1){
                            JSONObject jsonObject=(JSONObject)o;
                            jsonObject.put("EventNo",evenNo);
                            jsonObject.put("PatientId",CardNo);
                        for (Object o : jsonArray1) {
                            JSONObject jsonObject = (JSONObject) o;
                            jsonObject.put("EventNo", evenNo);
                            jsonObject.put("PatientId", CardNo);
                        }
                        }
                        //上傳細表
                        //上傳細表
                        addMongo("HDSD02_03", evenNo, CardNo, HospitalId, jsonArray1);
                        addMongo("HDSD02_03", evenNo, CardNo, HospitalId, jsonArray1);
                    }else{
                        for(Object o:jsonArray){
                            JSONObject jsonObject=(JSONObject)o;
                            jsonObject.put("EventNo",evenNo);
                            jsonObject.put("PatientId",CardNo);
                    } else {
                        for (Object o : jsonArray) {
                            JSONObject jsonObject = (JSONObject) o;
                            jsonObject.put("EventNo", evenNo);
                            jsonObject.put("PatientId", CardNo);
                        }
                        }
                        //检查报告
                        //检查报告
                        addMongo("HDSD01_01", evenNo, CardNo, HospitalId, jsonArray);
                        addMongo("HDSD01_01", evenNo, CardNo, HospitalId, jsonArray);
                    }
                    }
                    //出發採集上傳
                    //出發採集上傳
                    String jsonObject="{\"orgCode\":\""+HospitalId+"\",\"eventNo\":\""+evenNo+"\",\"patientId\":\""+CardNo+"\",\"referenceTime\":\""+RegDate+"\"}";
                    String jsonObject = "{\"orgCode\":\"" + HospitalId + "\",\"eventNo\":\"" + evenNo + "\",\"patientId\":\"" + CardNo + "\",\"referenceTime\":\"" + RegDate + "\"}";
                    params.put("patient", jsonObject);
                    params.put("patient", jsonObject);
                    String uploadUrl = HttpClientUtil.getUrl(crawlerConfiguration.getUploadIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getUploadApi());
                    String uploadInfo = HttpClientUtil.doPost(uploadUrl, params, null, null);
                    String uploadUrl = getUrl(crawlerConfiguration.getUploadIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getUploadApi());
                    String uploadInfo = HttpClientKit.post(uploadUrl, params).getBody();
                    monogoUrlValid(uploadInfo, "数据上传失败");
                    monogoUrlValid(uploadInfo, "数据上传失败");
                }
                }
@ -375,13 +273,143 @@ public class QLCController {
        return params;
        return params;
    }
    }
    private String addMongo(String tableName,String evenNo,String CardNo,String HospitalId, JSONArray jsonArray) throws Exception {
        Map<String, Object> params = new HashMap<String, Object>();
    /**
     * 得到挂号信息的病人基本信息入mongo
     *
     * @param CardType
     * @param CardNo
     * @param HospitalId
     * @return 返回就诊时间RegDate  yyyy-MM-dd HH:mm:ss
     * @throws Exception
     */
    private String getRegAndUserInfo(String CardType, String CardNo, String HospitalId) throws Exception {
        //-----------------------------得到挂号信息--start
        //拼凑RPC参数
        String regDate;
//        String param = "<Req><TransactionCode>5003</TransactionCode><Data><CardType>"+CardType+"</CardType><CardNo>"+CardNo+"</CardNo><IdCardNo></IdCardNo><OrderId></OrderId><ClinicCard></ClinicCard><TimeSlice></TimeSlice><StartTime></StartTime><EndTime></EndTime><RegFlag>2</RegFlag></Data></Req>";
//        String apiparam = "{\"ChannelId\"=\"" + qlcConfiguration.getChannelId() + "\"," +
//                "\"ParamType\"=1," +
//                "\"Params\"=\"" + param + "\"," +
//                "\"Guid\"=\"00000001111111\"," +
//                "\"V\"=\"3.0.0\"," +
//                "\"OutType\"=1," +
//                "\"HospitalId\"=\"" + HospitalId + "\"}";
//        Object s = getRPCData(qlcConfiguration.getIp() + CoreConstant.COLON + qlcConfiguration.getPort(), qlcConfiguration.getAppId(), "ZEUS.HosHOPWs.QueryRegInfo", apiparam);
        Object s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
                "<Resp> \n" +
                "<TransactionCode></TransactionCode> \n" +
                "<RespCode>10000</RespCode>\n" +
                "<RespMessage>成功</RespMessage>\n" +
                "<Data>\n" +
                "  <OrderId>1026333</OrderId>\n" +
                "  <IdCardNo>350181199101251517</IdCardNo>\n" +
                "  <BirthDay>1991-01-25</BirthDay>\n" +
                "  <Mobile>15805935227</Mobile>\n" +
                "  <Name>zlf</Name>\n" +
                "  <Sex>男</Sex>\n" +
                "  <Address></Address>\n" +
                "  <ClinicCard>6001</ClinicCard>\n" +
                "  <ClinicName></ClinicName>\n" +
                "  <DoctorName></DoctorName>\n" +
                "  <DoctorCode></DoctorCode>\n" +
                "  <DeptCode></DeptCode>\n" +
                "  <DeptName></DeptName>\n" +
                "  <PayFee></PayFee>\n" +
                "  <RegFee></RegFee>\n" +
                "  <ClinicFee></ClinicFee>\n" +
                "  <OtherFee></OtherFee>\n" +
                "  <OperatorId></OperatorId>\n" +
                "  <OperatorName></OperatorName>\n" +
                "  <RegDate>2016-08-23 17:00:00</RegDate>\n" +
                "  <TimeSlice></TimeSlice>\n" +
                "  <SqNo></SqNo>\n" +
                "  <Remark></Remark>\n" +
                "<RegFlag>true</RegFlag>\n" +
                "</Data>\n" +
                "</Resp>";
        //解析xml
        Document document = DocumentHelper.parseText(s.toString());
        Element root = document.getRootElement();
        String respCode = root.element("RespCode").getText();
        if ("10000".equals(respCode)) {
            //調用接口存入mongo--挂号信息
            Map<String, String> params = new HashMap<>();
            params.put("dataset", "HDSC01_02");
            params.put("data", XML2JsonData(root.asXML()));
            params.put("orgCode", HospitalId);
            String storageUrl = getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
            String storageInfo = HttpClientKit.post(storageUrl, params).getBody();
            monogoUrlValid(storageInfo, "挂号信息mongo入库失败");
            //得到时间 yyyy-MM-dd
            regDate = root.element("Data").element("RegDate").getText();
            //转换成 yyyy-MM-dd HH:mm:ss
            regDate = DateUtil.changeFormat(regDate, DateUtil.DEFAULT_DATE_YMD_FORMAT, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        } else {
            throw new Exception(s.toString());
        }
        //-----------------------------得到挂号信息--end
        //-----------------------------得到人口学信息--start
        //拼凑RPC参数
//        param = "<Req><TransactionCode>5003</TransactionCode><Data><CardType>"+CardType+"</CardType><CardNo>"+CardNo+"</CardNo><Mobile>123</Mobile><PatientId></PatientId></Data></Req>";
//        apiparam = "{\"ChannelId\"=\"" + qlcConfiguration.getChannelId() + "\"," +
//                "\"ParamType\"=1," +
//                "\"Params\"=\"" + param + "\"," +
//                "\"Guid\"=\"00000001111111\"," +
//                "\"V\"=\"3.0.0\"," +
//                "\"OutType\"=1," +
//                "\"HospitalId\"=\"" + HospitalId + "\"}";
//        s = getRPCData(qlcConfiguration.getIp() + CoreConstant.COLON + qlcConfiguration.getPort(), qlcConfiguration.getAppId(), "ZEUS.HosHOPWs.QueryUserInfo", apiparam);
        s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
                "<Resp>\n" +
                "<TransactionCode></TransactionCode>\n" +
                "<RespMessage>成功</RespMessage>\n" +
                "<RespCode>10000</RespCode>\n" +
                "<Data>\n" +
                "<PatientId>10001</PatientId>\n" +
                "<ClinicCard>6001</ClinicCard>\n" +
                "<Name>zlf</Name>\n" +
                "<Mobile>123456</Mobile>\n" +
                "<McardNo>6001</McardNo>\n" +
                "<Address>Address</Address>\n" +
                "<Sex>男</Sex>\n" +
                "<Fee>100</Fee>\n" +
                "<BirthDay>1991.1.25</BirthDay>\n" +
                "<Country>中国</Country>\n" +
                "<Nation>汉</Nation>\n" +
                "<BloodCode1>A</BloodCode1>\n" +
                "<BloodCode2></BloodCode2>\n" +
                "<Allergens></Allergens>\n" +
                "<IdCardId>350181199101251517</IdCardId>\n" +
                "</Data>\n" +
                "</Resp>";
        //解析xml
        document = DocumentHelper.parseText(s.toString());
        root = document.getRootElement();
        respCode = root.element("RespCode").getText();
        Map<String, String> params = new HashMap<>();
        if ("10000".equals(respCode)) {
            //調用接口存入mongo--人口学信息
            params.put("dataset", "HDSA00_01");
            params.put("data", XML2JsonData(root.asXML()));
            params.put("orgCode", HospitalId);
            String storageUrl = getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
            String storageInfo = HttpClientKit.post(storageUrl, params).getBody();
            monogoUrlValid(storageInfo, "人口学信息mongo入库失败");
        } else {
            throw new Exception(s.toString());
        }
        //-----------------------------得到人口学信息--end
        return regDate;
    }
    private String addMongo(String tableName, String evenNo, String CardNo, String HospitalId, JSONArray jsonArray) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("dataset", tableName);
        params.put("dataset", tableName);
        params.put("data", jsonArray.toString());
        params.put("data", jsonArray.toString());
        params.put("orgCode", HospitalId);
        params.put("orgCode", HospitalId);
        String storageUrl = HttpClientUtil.getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
        String storageInfo = HttpClientUtil.doPost(storageUrl, params, null, null);
        String storageUrl = getUrl(crawlerConfiguration.getStorageIp(), crawlerConfiguration.getStoragePort(), crawlerConfiguration.getStorageApi());
        String storageInfo = HttpClientKit.post(storageUrl, params).getBody();
        monogoUrlValid(storageInfo, "mongo入库失败");
        monogoUrlValid(storageInfo, "mongo入库失败");
        return storageInfo;
        return storageInfo;
    }
    }
@ -391,60 +419,30 @@ public class QLCController {
        return listSYSTEM.get(0).get("code").toString();
        return listSYSTEM.get(0).get("code").toString();
    }
    }
    /**
     * xml轉json
     *
     * @param xml
     * @return
     */
    private static String XML2JsonData(String xml)  throws  Exception{
        JSONArray object=new JSONArray();
        try {
            SAXReader saxReader = new SAXReader(false);
            Document document = DocumentHelper.parseText(xml);
            Element root = document.getRootElement();
            List<Element> elements=root.elements("Data");
            for (Element element:elements){
                List<Element> elementTemps=element.elements();
                JSONObject jo=new JSONObject();
                for(Element elementTemp:elementTemps){
                    if(elementTemp.hasContent()){
                        jo.put(elementTemp.getName(),elementTemp.getText());
                    }
                }
                object.add(jo);
            }
        }catch (Exception e){
            throw new Exception("返回的xml转JSON错误");
        }
        return object.toString();
    }
    private Object XML2JsonData1(String xml) throws Exception{
        JSONArray object=new JSONArray();
    private Object XML2JsonData1(String xml) throws Exception {
        JSONArray object = new JSONArray();
        try {
        try {
            SAXReader saxReader = new SAXReader(false);
            SAXReader saxReader = new SAXReader(false);
            Document document = DocumentHelper.parseText(xml);
            Document document = DocumentHelper.parseText(xml);
            Element root = document.getRootElement();
            Element root = document.getRootElement();
            List<Element> elements=root.elements("Data");
            for (Element element:elements){
            List<Element> elements = root.elements("Data");
            for (Element element : elements) {
                //得到data节点下面的data_1节点下面的数据
                //得到data节点下面的data_1节点下面的数据
                List<Element> elementsData1s=element.elements();
                for (Element elementsData1:elementsData1s){
                    if(element.getName().equals("Data_1")){
                        List<Element> elementTemps=elementsData1.elements();
                        JSONObject jo=new JSONObject();
                        for(Element elementTemp:elementTemps){
                            if(elementTemp.hasContent()){
                                jo.put(elementTemp.getName(),elementTemp.getText());
                List<Element> elementsData1s = element.elements();
                for (Element elementsData1 : elementsData1s) {
                    if (element.getName().equals("Data_1")) {
                        List<Element> elementTemps = elementsData1.elements();
                        JSONObject jo = new JSONObject();
                        for (Element elementTemp : elementTemps) {
                            if (elementTemp.hasContent()) {
                                jo.put(elementTemp.getName(), elementTemp.getText());
                            }
                            }
                        }
                        }
                        object.add(jo);
                        object.add(jo);
                    }
                    }
                }
                }
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            throw new Exception("返回的xml转JSON错误");
            throw new Exception("返回的xml转JSON错误");
        }
        }
        return object.toString();
        return object.toString();
@ -477,13 +475,14 @@ public class QLCController {
            throw new Exception(message);
            throw new Exception(message);
        }
        }
    }
    }
    //{"successFlg":true,"message":"数据入库成功!(表:HDSA00_01)","errorCode":0}
    //{"successFlg":true,"message":"数据入库成功!(表:HDSA00_01)","errorCode":0}
    private boolean monogoUrlValid(String info,String message) throws Exception {
    private boolean monogoUrlValid(String info, String message) throws Exception {
        JSONObject jo = JSONObject.fromObject(info);
        JSONObject jo = JSONObject.fromObject(info);
        if ((Boolean) jo.get("successFlg")) {
        if ((Boolean) jo.get("successFlg")) {
            return true;
            return true;
        } else {
        } else {
            throw new Exception(message+" --- "+jo.get("message").toString());
            throw new Exception(message + " --- " + jo.get("message").toString());
        }
        }
    }
    }
@ -493,4 +492,11 @@ public class QLCController {
                appId).call(api, apiparam);
                appId).call(api, apiparam);
    }
    }
    private String getUrl(String ip, String port, String api) {
        String url = CoreConstant.HTTP + CoreConstant.COLON + CoreConstant.BACKSLASH +
                CoreConstant.BACKSLASH + ip + CoreConstant.COLON + port +
                CoreConstant.BACKSLASH + api;
        return url;
    }
}
}

+ 71 - 97
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/EsbHttp.java

@ -1,28 +1,21 @@
package com.yihu.hos.rest.services.crawler;
package com.yihu.hos.rest.services.crawler;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.encrypt.MD5;
import com.yihu.hos.core.encrypt.MD5;
import com.yihu.hos.core.httpclient.HttpClientUtil;
import com.yihu.hos.core.httpclient.HttpResponse;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.rest.common.http.EHRHttpHelper;
import com.yihu.hos.rest.common.http.EHRHttpHelper;
import com.yihu.hos.rest.models.crawler.adapter.AdapterDataSet;
import com.yihu.hos.rest.models.crawler.config.SysConfig;
import com.yihu.hos.rest.models.crawler.config.SysConfig;
import com.yihu.hos.rest.models.crawler.patient.Patient;
import com.yihu.hos.rest.models.crawler.patient.Patient;
import com.yihu.hos.rest.models.crawler.transform.EhrCondition;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import org.apache.http.HttpStatus;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import org.json.JSONObject;
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Encoder;
import java.io.File;
import java.io.File;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
/**
 * Created by hzp on 2016/3/10.
 * Created by hzp on 2016/3/10.
@ -35,23 +28,22 @@ public class EsbHttp {
    /**
    /**
     * 用户登录验证
     * 用户登录验证
     */
     */
    public static HttpResponse loginAction(String user, String password) throws Exception{
        String loginAction = EHRHttpHelper.defaultHttpUrl+"/authorizations/users/" + user;
        Map<String,Object> header = new HashMap<>();
        String auth  = new BASE64Encoder().encode((user+":"+password).getBytes());
        header.put("Authorization","Basic "+auth);
    public static HTTPResponse loginAction(String user, String password) throws Exception {
        String loginAction = EHRHttpHelper.defaultHttpUrl + "/authorizations/users/" + user;
        Map<String, String> header = new HashMap<>();
        String auth = new BASE64Encoder().encode((user + ":" + password).getBytes());
        header.put("Authorization", "Basic " + auth);
        return EHRHttpHelper.put(loginAction, null, header);
        return EHRHttpHelper.put(loginAction, null, header);
    }
    }
    /*
    /*
    *   获取用户信息
    *   获取用户信息
    * */
    * */
    public static HttpResponse getUserInfo(String user,String token)
    {
        String url = EHRHttpHelper.defaultHttpUrl+"/users/" + user;
        Map<String,Object> params = new HashMap<>();
        params.put("token",token);
        params.put("user",user);
    public static HTTPResponse getUserInfo(String user, String token) {
        String url = EHRHttpHelper.defaultHttpUrl + "/users/" + user;
        Map<String, String> params = new HashMap<>();
        params.put("token", token);
        params.put("user", user);
        return EHRHttpHelper.get(url, params);
        return EHRHttpHelper.get(url, params);
    }
    }
@ -59,14 +51,13 @@ public class EsbHttp {
    /**
    /**
     * 获取本机指纹
     * 获取本机指纹
     *
     * @return
     * @return
     */
     */
    private static String GetFingerprint(){
    private static String GetFingerprint() {
        try {
        try {
            return UUID.randomUUID().toString();
            return UUID.randomUUID().toString();
        }
        catch (Exception e)
        {
        } catch (Exception e) {
            System.out.print(e.getMessage());
            System.out.print(e.getMessage());
            return "";
            return "";
        }
        }
@ -75,16 +66,16 @@ public class EsbHttp {
    /**
    /**
     * 应用登录验证
     * 应用登录验证
     */
     */
    public static String getToken(){
    public static String getToken() {
        try {
        try {
            String loginAction = EHRHttpHelper.defaultHttpUrl + "/authorizations/clients/" + EHRHttpHelper.clientId;
            String loginAction = EHRHttpHelper.defaultHttpUrl + "/authorizations/clients/" + EHRHttpHelper.clientId;
            Map<String, Object> header = new HashMap<>();
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            //本地指纹
            //本地指纹
            Map<String, Object> params = new HashMap<String, Object>();
            Map<String, String> params = new HashMap<>();
            params.put("info", "{\"fingerprint\": \"" + GetFingerprint() + "\"}");
            params.put("info", "{\"fingerprint\": \"" + GetFingerprint() + "\"}");
            HttpResponse response = EHRHttpHelper.put(loginAction, params, header);
            HTTPResponse response = EHRHttpHelper.put(loginAction, params, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                JSONObject obj = new JSONObject(response.getBody());
                JSONObject obj = new JSONObject(response.getBody());
                //判断是否成功
                //判断是否成功
@ -103,49 +94,43 @@ public class EsbHttp {
                logger.info(msg);
                logger.info(msg);
                return null;
                return null;
            }
            }
        }
        catch (Exception ex)
        {
        } catch (Exception ex) {
            logger.info("获取Token失败," + ex.getMessage());
            logger.info("获取Token失败," + ex.getMessage());
            return null;
            return null;
        }
        }
    }
    }
        /**
         * 获取公钥
         */
    public static String getPublicKey(String orgCode){
    /**
     * 获取公钥
     */
    public static String getPublicKey(String orgCode) {
        try {
        try {
            String token = getToken();
            String token = getToken();
            if (!StringUtil.isEmpty(SysConfig.getInstance().getPublicKeyMap().get(orgCode))) {
            if (!StringUtil.isEmpty(SysConfig.getInstance().getPublicKeyMap().get(orgCode))) {
                return SysConfig.getInstance().getPublicKeyMap().get(orgCode);
                return SysConfig.getInstance().getPublicKeyMap().get(orgCode);
            }
            }
            Map<String, Object> header = new HashMap<>();
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            Map<String, Object> paramMap = new HashMap<>();
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("org_code", orgCode);
            paramMap.put("org_code", orgCode);
            paramMap.put("token", token);
            paramMap.put("token", token);
            String publicKeyMethod = EHRHttpHelper.defaultHttpUrl + "/organizations/"+orgCode+"/key";
            HttpResponse response = EHRHttpHelper.get(publicKeyMethod, paramMap, header);
            String publicKeyMethod = EHRHttpHelper.defaultHttpUrl + "/organizations/" + orgCode + "/key";
            HTTPResponse response = EHRHttpHelper.get(publicKeyMethod, paramMap, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                JSONObject json = new JSONObject(response.getBody());
                JSONObject json = new JSONObject(response.getBody());
                if(json.has("publicKey"))
                {
                if (json.has("publicKey")) {
                    String publicKey = json.getString("publicKey");
                    String publicKey = json.getString("publicKey");
                    SysConfig.getInstance().getPublicKeyMap().put(orgCode, publicKey);
                    SysConfig.getInstance().getPublicKeyMap().put(orgCode, publicKey);
                    return publicKey;
                    return publicKey;
                }
                else{
                } else {
                    logger.info("获取公钥失败,返回未包含publicKey。");
                    logger.info("获取公钥失败,返回未包含publicKey。");
                    return null;
                    return null;
                }
                }
            }
            else{
            } else {
                String msg = "获取公钥失败。";
                String msg = "获取公钥失败。";
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                }
                logger.info(msg);
                logger.info(msg);
                return null;
                return null;
@ -163,21 +148,19 @@ public class EsbHttp {
        try {
        try {
            String token = getToken();
            String token = getToken();
            String versionMethod = EHRHttpHelper.defaultHttpUrl + "/adaptions/org_plan/version";
            String versionMethod = EHRHttpHelper.defaultHttpUrl + "/adaptions/org_plan/version";
            Map<String, Object> header = new HashMap<>();
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            Map<String, Object> params = new HashMap<>();
            Map<String, String> params = new HashMap<>();
            params.put("org_code", orgCode);
            params.put("org_code", orgCode);
            params.put("token", token);
            params.put("token", token);
            HttpResponse response = EHRHttpHelper.get(versionMethod, params, header);
            HTTPResponse response = EHRHttpHelper.get(versionMethod, params, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                return response.getBody();
                return response.getBody();
            }
            else{
            } else {
                String msg = "获取健康云平台标准版本号失败";
                String msg = "获取健康云平台标准版本号失败";
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                }
                logger.info(msg);
                logger.info(msg);
@ -198,51 +181,45 @@ public class EsbHttp {
        try {
        try {
            JSONObject json = new JSONObject(data);
            JSONObject json = new JSONObject(data);
            String colName = SysConfig.registerIdCardNo;
            String colName = SysConfig.registerIdCardNo;
            Map<String, Object> header = new HashMap<>();
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("User-Agent", "client " + EHRHttpHelper.clientId);
            header.put("User-Agent", "client " + EHRHttpHelper.clientId);
            if(json!=null && json.has("data")) {
                JSONObject p = (JSONObject)json.getJSONArray("data").get(0);
                if(!p.has(colName) || StringUtil.isEmpty(p.get(colName))) {
            if (json != null && json.has("data")) {
                JSONObject p = (JSONObject) json.getJSONArray("data").get(0);
                if (!p.has(colName) || StringUtil.isEmpty(p.get(colName))) {
                    logger.info("注册病人信息请求失败:身份证号码为空,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                    logger.info("注册病人信息请求失败:身份证号码为空,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                    return false;
                    return false;
                }
                else{
                } else {
                    String idCord = p.getString(colName);
                    String idCord = p.getString(colName);
                    String registerMethod = EHRHttpHelper.defaultHttpUrl + "/patients/"+idCord;
                    String registerMethod = EHRHttpHelper.defaultHttpUrl + "/patients/" + idCord;
                    if (StringUtil.isEmpty(data)) {
                    if (StringUtil.isEmpty(data)) {
                        logger.info("注册病人信息请求失败:无具体病人信息,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                        logger.info("注册病人信息请求失败:无具体病人信息,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                        return false;
                        return false;
                    }
                    }
                    Map<String, Object> paramMap = new HashMap<>();
                    Map<String, String> paramMap = new HashMap<>();
                    paramMap.put("demographic_id", idCord);
                    paramMap.put("demographic_id", idCord);
                    paramMap.put("json", data);
                    paramMap.put("json", data);
                    paramMap.put("token", token);
                    paramMap.put("token", token);
                    HttpResponse response = EHRHttpHelper.post(registerMethod, paramMap, header);
                    HTTPResponse response = EHRHttpHelper.post(registerMethod, paramMap, header);
                    if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                    if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                        logger.info("注册病人信息成功。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
                        logger.info("注册病人信息成功。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
                        return true;
                        return true;
                    }
                    else{
                    } else {
                        String msg = "注册病人信息请求失败。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo();
                        String msg = "注册病人信息请求失败。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo();
                        if(response != null)
                        {
                            msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                        if (response != null) {
                            msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                        }
                        }
                        logger.info(msg);
                        logger.info(msg);
                        return false;
                        return false;
                    }
                    }
                }
                }
            }
            else{
            } else {
                logger.info("注册病人信息请求失败:传入数据无效,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                logger.info("注册病人信息请求失败:传入数据无效,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                return false;
                return false;
            }
            }
        }
        catch (Exception e)
        {
        } catch (Exception e) {
            logger.info("注册病人信息请求失败." + e.getMessage());
            logger.info("注册病人信息请求失败." + e.getMessage());
            return false;
            return false;
        }
        }
@ -254,33 +231,30 @@ public class EsbHttp {
    public static boolean upload(Patient patient, File file, String encryptPwd, String token) {
    public static boolean upload(Patient patient, File file, String encryptPwd, String token) {
        try {
        try {
            String uploadMethod = EHRHttpHelper.defaultHttpUrl + "/packages";
            String uploadMethod = EHRHttpHelper.defaultHttpUrl + "/packages";
            String fileMd5= MD5.getMd5ByFile(file);
            List<NameValuePair> formParams = new ArrayList<>();
            formParams.add(new BasicNameValuePair("md5", fileMd5));
            formParams.add(new BasicNameValuePair("package_crypto", encryptPwd));
            formParams.add(new BasicNameValuePair("org_code", patient.getOrgCode()));
            formParams.add(new BasicNameValuePair("token", token));
            Map<String, Object> header = new HashMap<>();
            String fileMd5 = MD5.getMd5ByFile(file);
            Map<String, String> formParams = new HashMap<>();
            formParams.put("md5", fileMd5);
            formParams.put("package_crypto", encryptPwd);
            formParams.put("org_code", patient.getOrgCode());
            formParams.put("token", token);
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("User-Agent", "client " + EHRHttpHelper.clientId);
            header.put("User-Agent", "client " + EHRHttpHelper.clientId);
            HttpResponse response = EHRHttpHelper.postFile(uploadMethod, formParams, file.getAbsolutePath(), header);
            HTTPResponse response = EHRHttpHelper.postFile(uploadMethod, formParams, file.getAbsolutePath(), header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                logger.info("上传病人档案成功,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                logger.info("上传病人档案成功,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return true;
                return true;
            }
            else {
            } else {
                String msg = "上传病人档案请求失败,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo();
                String msg = "上传病人档案请求失败,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo();
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                }
                logger.info(msg);
                logger.info(msg);
                return false;
                return false;
            }
            }
        }
        catch (Exception e) {
        } catch (Exception e) {
            logger.info("上传病人档案异常,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
            logger.info("上传病人档案异常,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
            logger.error(e.getCause().toString());
            logger.error(e.getCause().toString());
            return false;
            return false;
@ -291,17 +265,17 @@ public class EsbHttp {
    /**
    /**
     * 下载标准包
     * 下载标准包
     */
     */
    public static HttpResponse download(String remoteVersion, String orgCode) {
    public static HTTPResponse download(String remoteVersion, String orgCode) {
        try {
        try {
            String token = getToken();
            String token = getToken();
            String downLoadMethod = EHRHttpHelper.defaultHttpUrl + "/adaptions/"+orgCode+"/source";
            Map<String, Object> params = new HashMap<>();
            String downLoadMethod = EHRHttpHelper.defaultHttpUrl + "/adaptions/" + orgCode + "/source";
            Map<String, String> params = new HashMap<>();
            params.put("version_code", remoteVersion);
            params.put("version_code", remoteVersion);
            params.put("org_code", orgCode);
            params.put("org_code", orgCode);
            params.put("token", token);
            params.put("token", token);
            Map<String, Object> header = new HashMap<>();
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            header.put("Authorization", "Basic " + EHRHttpHelper.clientKey);
            HttpResponse response = EHRHttpHelper.get(downLoadMethod, params, header);
            HTTPResponse response = EHRHttpHelper.get(downLoadMethod, params, header);
            return response;
            return response;
        } catch (Exception e) {
        } catch (Exception e) {
            logger.info("下载标准包异常:");
            logger.info("下载标准包异常:");