DataService.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.zskk.service;
  2. import java.io.IOException;
  3. import java.nio.charset.StandardCharsets;
  4. import java.security.KeyFactory;
  5. import java.security.PrivateKey;
  6. import java.security.Signature;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. import java.util.*;
  10. import java.security.spec.PKCS8EncodedKeySpec;
  11. import java.security.MessageDigest;
  12. import java.security.NoSuchAlgorithmException;
  13. import org.apache.commons.codec.binary.Hex;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.apache.commons.codec.binary.Base64;
  16. import com.alibaba.fastjson.JSON;
  17. import com.alibaba.fastjson.JSONArray;
  18. import com.alibaba.fastjson.JSONObject;
  19. import com.jfinal.kit.PropKit;
  20. import okhttp3.FormBody;
  21. import okhttp3.MediaType;
  22. import okhttp3.OkHttpClient;
  23. import okhttp3.Request;
  24. import okhttp3.RequestBody;
  25. import okhttp3.Response;
  26. public class DataService {
  27. private static String GET_EXAM_URL = "https://risserver3.pacsonline.cn/butt/getExam";
  28. private static String SAVE_REPORT_URL = "https://risserver3.pacsonline.cn/butt/saveReport";
  29. private static String UPDATE_PATIENT_URL = "https://risserver3.pacsonline.cn/butt/saveExam";
  30. private static String FEE_URL = "https://risserver3.pacsonline.cn/film/callback";
  31. private static final OkHttpClient OKHTTP_CLIENT = new OkHttpClient();
  32. private static final MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8");
  33. /**
  34. * 获取未出报告的检查列表
  35. * @param instutionId
  36. * @param number
  37. */
  38. // public JSONArray getExamList(Integer number) {
  39. // Map <String,String> map = new HashMap<String,String>();
  40. // map.put("institution_id", PropKit.get("institution_id"));
  41. // map.put("num", number.toString());
  42. // String content = postWithParameters(GET_EXAM_URL, map);
  43. // JSONObject jsonObject = JSON.parseObject(content);
  44. // if (!jsonObject.getString("msg").equals("success")) {
  45. // return null;
  46. // }
  47. // JSONArray jsonArray = JSON.parseArray(jsonObject.getString("data"));
  48. // return jsonArray;
  49. //
  50. // }
  51. /**
  52. * 写入报告
  53. * @param instutionId
  54. * @param number
  55. */
  56. // public void saveReport(Map <String,String> map) {
  57. // postWithParameters(SAVE_REPORT_URL, map);
  58. //
  59. // }
  60. /**
  61. * 更新患者信息
  62. * @param instutionId
  63. * @param number
  64. */
  65. // public void updatePatientInfo(Map<String, String> map) {
  66. // postWithParameters(UPDATE_PATIENT_URL, map);
  67. // }
  68. /*
  69. * 医院代收
  70. */
  71. // public void fee(JSONObject jsonObject) {
  72. // postWithJson(FEE_URL, jsonObject);
  73. // }
  74. public static String postWithParameters(String url, Map<String, String> map,String sj,String ps) throws Exception {
  75. FormBody.Builder formbody = new FormBody.Builder();
  76. for (Map.Entry<String, String> entry : map.entrySet()) {
  77. formbody.add(entry.getKey(), entry.getValue());
  78. }
  79. RequestBody requestBody = formbody.build();
  80. Request request = new Request.Builder()
  81. .url(url)
  82. .header("orgId", "10179").addHeader("hospitalId", "10179001").addHeader("appId", "app5994124361340817290").addHeader("signType", "RSA2").addHeader("sign", getSign(ps,"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKpWTmdc7hhqndi2NjKQZ706GnQpRbIRCQifuUBTyENSj3ZaHDzoJF4d/KjejFL5XQUAb+6BFtG0qBMLn+CNiIRHzS+mITEWPf0ab0ksFe1MjtU4kY+Ie39YU+6/w7cFeoSvsokz03zsXG6TdvKvm1f3HhlMtmwLZKamn5LlbdDjAgMBAAECgYBeyVol0KO5uJKPxo2QQ6VGum+AFntvJGWng+I9dqHpPKcSkABIsFGUghFYE0d44MSvhNfEm9cL6QDiYESeW4QMVY88Drlu+yb0VKQbA9m+tgBrXXItKcpl2BsRiSuA2auck1FbhBCT9flWWU4emnBHzcAE4Ljm4dvK4U8xODxhyQJBAPAdEoeDwQomz97T/d5l29D/zqK1vMwHiHI9dKw8WKb1OvKy6EdZCTgKxK0oiEQcEss//aBYsUA3hoQ78Hd0NW8CQQC1m2T3Uo+f49MRcYeTF8QLJRp+fIbqwfvH6vxNqIeEaqPCRx41Ko+f7L8r9YiNKEC2slmjPfuGDIcupuvWk+nNAkA4qRObSNr/s0LwOSQ6G90wR30SZkJj/w8Sri/fCOp+k3XSmac4VulXASuCFQN61wkUT0hhUyyYk8G5aI+JELIfAkAneUhf7cUkJtwI7ZlfYooNNhplJeIZguKcWLpQkvIp2RgRMW4idkbTpx0CjBMLQ5WVYHzVW7KhN3XmsQeQE4R9AkBagT4KPrDgOBoTm8WADsYlie88DVSlXaXTGyWG59ypBuI37QZwsFfdlkoN3cAjCVseyEuUydF5pX1Pyc3CPryO")).addHeader("timestamp", sj)
  83. .post(requestBody)
  84. .build();
  85. try (Response response = OKHTTP_CLIENT.newCall(request).execute()) {
  86. if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
  87. String content = response.body().string();
  88. System.out.println(content);
  89. return content;
  90. } catch (IOException e) {
  91. // TODO Auto-generated catch block
  92. e.printStackTrace();
  93. return null;
  94. }
  95. }
  96. public static String postWithJson(String url, JSONObject jsonObject,String sj,String ps) throws Exception {
  97. RequestBody requestBody = RequestBody.create(JSON_TYPE, jsonObject.toJSONString());
  98. Request request = new Request.Builder().url(url).header("orgId", "10179").addHeader("hospitalId", "10179001").addHeader("appId", "app5994124361340817290").addHeader("signType", "RSA2").addHeader("sign", getSign(ps,"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKpWTmdc7hhqndi2NjKQZ706GnQpRbIRCQifuUBTyENSj3ZaHDzoJF4d/KjejFL5XQUAb+6BFtG0qBMLn+CNiIRHzS+mITEWPf0ab0ksFe1MjtU4kY+Ie39YU+6/w7cFeoSvsokz03zsXG6TdvKvm1f3HhlMtmwLZKamn5LlbdDjAgMBAAECgYBeyVol0KO5uJKPxo2QQ6VGum+AFntvJGWng+I9dqHpPKcSkABIsFGUghFYE0d44MSvhNfEm9cL6QDiYESeW4QMVY88Drlu+yb0VKQbA9m+tgBrXXItKcpl2BsRiSuA2auck1FbhBCT9flWWU4emnBHzcAE4Ljm4dvK4U8xODxhyQJBAPAdEoeDwQomz97T/d5l29D/zqK1vMwHiHI9dKw8WKb1OvKy6EdZCTgKxK0oiEQcEss//aBYsUA3hoQ78Hd0NW8CQQC1m2T3Uo+f49MRcYeTF8QLJRp+fIbqwfvH6vxNqIeEaqPCRx41Ko+f7L8r9YiNKEC2slmjPfuGDIcupuvWk+nNAkA4qRObSNr/s0LwOSQ6G90wR30SZkJj/w8Sri/fCOp+k3XSmac4VulXASuCFQN61wkUT0hhUyyYk8G5aI+JELIfAkAneUhf7cUkJtwI7ZlfYooNNhplJeIZguKcWLpQkvIp2RgRMW4idkbTpx0CjBMLQ5WVYHzVW7KhN3XmsQeQE4R9AkBagT4KPrDgOBoTm8WADsYlie88DVSlXaXTGyWG59ypBuI37QZwsFfdlkoN3cAjCVseyEuUydF5pX1Pyc3CPryO")).addHeader("timestamp", sj).post(requestBody).build();
  99. try (Response response = OKHTTP_CLIENT.newCall(request).execute()) {
  100. if (!response.isSuccessful())
  101. throw new IOException("Unexpected code " + response);
  102. String content = response.body().string();
  103. System.out.println(content);
  104. return content;
  105. } catch (IOException e) {
  106. // TODO Auto-generated catch block
  107. e.printStackTrace();
  108. return null;
  109. }
  110. }
  111. public static String sj() {
  112. Date date = new Date();
  113. Long time =System.currentTimeMillis();;
  114. return time.toString();
  115. }
  116. public static String presign(String sj) {
  117. MessageDigest md=null;
  118. try {
  119. md = MessageDigest.getInstance("MD5");
  120. } catch (NoSuchAlgorithmException e) {
  121. // TODO Auto-generated catch block
  122. e.printStackTrace();
  123. }
  124. Map <String,String> map = new HashMap<String,String>();
  125. map.put("startDate", "2023-09-06 00:00:00");
  126. map.put("endDate", "2023-09-06 12:00:00");
  127. String data = JSON.toJSONString(map)+sj;
  128. System.out.println(data);
  129. String md5Str = Hex.encodeHexString(md.digest(data.getBytes(StandardCharsets.UTF_8)));
  130. return md5Str;
  131. }
  132. public static String getSign(String preStr, String appSecret)
  133. throws Exception {
  134. appSecret = appSecret.replace("-----BEGIN PRIVATE KEY-----",
  135. "").replace("-----END PRIVATE KEY-----", "").replace("\r",
  136. "").replace("\n", "").trim();
  137. String suite = "SHA256WithRSA";
  138. //初始化算法 SHA256
  139. Signature signature = Signature.getInstance(suite);
  140. PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(appSecret));
  141. //初始化私钥+RSA
  142. KeyFactory keyFac = KeyFactory.getInstance("RSA");
  143. PrivateKey privateKey = keyFac.generatePrivate(keySpec);
  144. signature.initSign(privateKey);
  145. //待签名字符串转 byte 数组使用 UTF8
  146. byte[] msgBuf = preStr.getBytes("UTF8");
  147. signature.update(msgBuf);
  148. byte[] byteSign = signature.sign();
  149. //签名值 byte 数组转字符串用 BASE64
  150. String strSign = Base64.encodeBase64String(byteSign);
  151. return strSign;
  152. }
  153. public static void main(String[] args) throws Exception {
  154. Map <String,String> map = new HashMap<String,String>();
  155. map.put("startDate", "2023-09-06 00:00:00");
  156. map.put("endDate", "2023-09-06 12:00:00");
  157. String sj = sj();
  158. String ps = presign(sj);
  159. JSONObject gg = new JSONObject();
  160. gg.put("startDate", "2023-09-06 00:00:00");
  161. gg.put("endDate", "2023-09-06 12:00:00");
  162. postWithJson("https://nyxzyy.msunhis.com/msun-middle-business-pacs/v1/patients", gg,sj,ps);
  163. String aaa = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBA\n"
  164. + "IxuagdiKqsvabbRxclFcLAIJXCBfj7nbMAnL5r+uUr3n2qXDXLRP8AoI\n"
  165. + "pwa2kiVJdLLtK2dQlQD0b5VzNTTYDOWjC/SL2l41r8kXxBHD3cLjS\n"
  166. + "SP2d0KxIrybdVrjof18Y/H0bS8uskNfoZcVOo/lH6z3c9RUrZUnAvFQd\n"
  167. + "GiQZXrAgMBAAECgYBj71dI9dUDiXQjg9jKyL3Op51tGNnsjehYPgq\n"
  168. + "ktEzMSreJtQD/CmXhqy4mBP391RXbktd7DYRcIXOrjYd8lQfJ2xCmvp\n"
  169. + "WMMqeQ1uzxTddHfl3FrlPLqc5UZLdjiAxINme33TDarscsc/KnDy1WE\n"
  170. + "85pE5iHwgZtbKgUsyOvY9nf0QJBAOhMzUzc9Lw5QJxV+zFGWDJw\n"
  171. + "Hy1G956Wzgxz9ljLAYQEskgOrDVVuwSiJMxWNMasksCZzkkIMkPi\n"
  172. + "KjxPhUroZFUCQQCawjDZSBPMZGN6fVcG1IT9r4kUIzy78jPA1o2hG\n"
  173. + "5c0dXcUJl1QuWeC9DssOSC5Btpzdb0bfaqMgfkCtAnAClE/AkEA3qim\n"
  174. + "67KqPjPeUzsyvyM+7HF94KcyN2cy7srD6I4E0Oazf8/YjnKzBJjqDpXel\n"
  175. + "kPZkhSannPlwh1pAE/0Yj1n1QJAWkdEJcylOAur+G2b0fExr6exyJyRtn\n"
  176. + "Yg+LJwpnYo68JGd+u1bfzqRHti9XZR/33e+5HIgnv5fMPpVklekreyEwJ\n"
  177. + "AFAeBw+T39QRWf5gPs1mGGMKKpBpfk74Pk9r+W9Uk7thP0pzmbo\n"
  178. + "RM5ExXt960uoEn9OY9MfIrmFzwhku+8lLIBg==";
  179. String bb = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKpWTmdc7hhqndi2NjKQZ706GnQpRbIRCQifuUBTyENSj3ZaHDzoJF4d/KjejFL5XQUAb+6BFtG0qBMLn+CNiIRHzS+mITEWPf0ab0ksFe1MjtU4kY+Ie39YU+6/w7cFeoSvsokz03zsXG6TdvKvm1f3HhlMtmwLZKamn5LlbdDjAgMBAAECgYBeyVol0KO5uJKPxo2QQ6VGum+AFntvJGWng+I9dqHpPKcSkABIsFGUghFYE0d44MSvhNfEm9cL6QDiYESeW4QMVY88Drlu+yb0VKQbA9m+tgBrXXItKcpl2BsRiSuA2auck1FbhBCT9flWWU4emnBHzcAE4Ljm4dvK4U8xODxhyQJBAPAdEoeDwQomz97T/d5l29D/zqK1vMwHiHI9dKw8WKb1OvKy6EdZCTgKxK0oiEQcEss//aBYsUA3hoQ78Hd0NW8CQQC1m2T3Uo+f49MRcYeTF8QLJRp+fIbqwfvH6vxNqIeEaqPCRx41Ko+f7L8r9YiNKEC2slmjPfuGDIcupuvWk+nNAkA4qRObSNr/s0LwOSQ6G90wR30SZkJj/w8Sri/fCOp+k3XSmac4VulXASuCFQN61wkUT0hhUyyYk8G5aI+JELIfAkAneUhf7cUkJtwI7ZlfYooNNhplJeIZguKcWLpQkvIp2RgRMW4idkbTpx0CjBMLQ5WVYHzVW7KhN3XmsQeQE4R9AkBagT4KPrDgOBoTm8WADsYlie88DVSlXaXTGyWG59ypBuI37QZwsFfdlkoN3cAjCVseyEuUydF5pX1Pyc3CPryO\n";
  180. String aaa1 = getSign("2f2b0ec46ea8cfe4e256649eb873777d",aaa.replaceAll("\n",""));
  181. String bbbq = getSign(ps,bb);
  182. System.out.println(aaa1);
  183. System.out.println(bbbq);
  184. }
  185. }