UpdateTask.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. package com.zskk.task;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.jfinal.plugin.activerecord.Db;
  6. import com.jfinal.plugin.activerecord.Record;
  7. import com.jfinal.plugin.cron4j.ITask;
  8. import com.zskk.model.Doctors;
  9. import com.zskk.model.Exams;
  10. import com.zskk.model.Report;
  11. import com.zskk.model.Studies;
  12. import org.apache.http.client.config.RequestConfig;
  13. import org.apache.http.client.methods.CloseableHttpResponse;
  14. import org.apache.http.client.methods.HttpPost;
  15. import org.apache.http.entity.StringEntity;
  16. import org.apache.http.impl.client.CloseableHttpClient;
  17. import org.apache.http.impl.client.HttpClients;
  18. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  19. import org.apache.log4j.Logger;
  20. import java.io.BufferedReader;
  21. import java.io.IOException;
  22. import java.io.InputStreamReader;
  23. import java.io.PrintWriter;
  24. import java.nio.charset.Charset;
  25. import java.text.ParseException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. public class UpdateTask implements ITask {
  29. Logger logger = Logger.getLogger(UpdateTask.class);
  30. private static String GET_EXAM_URL = "https://risserver3.pacsonline.cn/butt/getExam";
  31. private static String SAVE_REPORT_URL = "https://risserver3.pacsonline.cn/butt/saveReport";
  32. private static CloseableHttpClient httpClient;
  33. static {
  34. PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
  35. cm.setMaxTotal(100);
  36. cm.setDefaultMaxPerRoute(20);
  37. cm.setDefaultMaxPerRoute(50);
  38. httpClient = HttpClients.custom().setConnectionManager(cm).build();
  39. }
  40. @Override
  41. public void run() {
  42. // TODO Auto-generated method stub
  43. try {
  44. //List<Exams> exams = Exams.dao.use("zskk").find("SELECT * FROM pacsonline.exams where exam_status=3 and institution_id=51000001 order by createdAt desc limit 50");
  45. JSONArray examList = getExamList("51000001", 30);
  46. List<Exams> exams = JSONObject.parseArray(examList.toJSONString(), Exams.class);
  47. for (Exams exams2 : exams) {
  48. logger.info(exams2.getId());
  49. try {
  50. Studies studies = Studies.dao.use("zskk").findById(exams2.getStudyId());
  51. Record record = Db.use("connected2").findFirst("select * from reportinfo where STUDYUID=?",studies.getStudyuid());
  52. if (record == null) {
  53. continue;
  54. }
  55. Report report = new Report().use("zskk");
  56. report.setId(creatId());
  57. report.setReportDatetime(parseStringToDate(record.getStr("REPORTDATE")));
  58. if (record.getStr("IMPRESSION") == null && record.getStr("DESCRIPTION") == null) {
  59. continue;
  60. }
  61. Map<String, String> params = new HashMap<>();
  62. //params.put("institution_id","51000001");
  63. //exams表
  64. params.put("exam_id",exams2.getId());
  65. //报告医生姓名
  66. params.put("report_doctor_name",record.getStr("REPORTDOCTOR"));
  67. //报告时间
  68. params.put("report_datetime",record.getStr("REPORTDATE"));
  69. //审核医生姓名
  70. params.put("review_doctor_name",record.getStr("REVIEWDOCTOR"));
  71. //审核时间
  72. params.put("review_datetime",record.getStr("REPORTDATE"));
  73. //确认医生姓名
  74. params.put("confirm_doctor_name",record.getStr("REVIEWDOCTOR"));
  75. //确认时间
  76. params.put("confirm_datetime",record.getStr("REPORTDATE"));
  77. if (record.getStr("IMPRESSION") == null && record.getStr("DESCRIPTION") == null) {
  78. continue;
  79. }
  80. //意见建议
  81. params.put("impression",record.getStr("IMPRESSION"));
  82. //影像所见
  83. params.put("description",record.getStr("DESCRIPTION"));
  84. //exams表
  85. //申请科室
  86. params.put("application_department",record.getStr("DEPARTMENT"));
  87. //申请医生
  88. params.put("application_doctor",record.getStr("CLINICALDOCTOR"));
  89. //临床诊断
  90. params.put("clin_diag",record.getStr("DIAGNOSIS"));
  91. //patient_infos表
  92. //患者姓名
  93. params.put("name",record.getStr("PATIENTNAME"));
  94. //患者手机号
  95. params.put("phone",record.getStr("phone"));
  96. //患者身份证号
  97. params.put("card_num",record.getStr("IDCARD"));
  98. params.put("report_result","1");
  99. String post = post(SAVE_REPORT_URL, JSON.toJSONString(params));
  100. logger.error(post);
  101. /*report.setImpression(record.getStr("IMPRESSION"));
  102. report.setDescription(record.getStr("DESCRIPTION"));
  103. report.setExamId(exams2.getId());
  104. report.setCreatedAt(new Date());
  105. report.setReportDoctorId(getDoctorIdByName(record.getStr("REPORTDOCTOR")));
  106. report.setReviewDoctorId(getDoctorIdByName(record.getStr("REVIEWDOCTOR")));
  107. report.setReviewDatetime(parseStringToDate(record.getStr("REPORTDATE")));
  108. report.setConfirmDoctorId(getDoctorIdByName(record.getStr("REVIEWDOCTOR")));
  109. report.setConfirmDatetime(parseStringToDate(record.getStr("REPORTDATE")));
  110. report.save();
  111. PatientInfos patientInfos = PatientInfos.dao.use("zskk").findById(exams2.getPatientId());
  112. patientInfos.setName(record.getStr("PATIENTNAME"));
  113. patientInfos.setPhone(record.getStr("PHONE")==null?"":record.getStr("PHONE"));
  114. patientInfos.setCardNum(record.getStr("IDCARD")==null?"":record.getStr("IDCARD"));
  115. patientInfos.update();
  116. exams2.setApplicationDepartment(record.getStr("DEPARTMENT"));
  117. exams2.setApplicationDoctor(record.getStr("CLINICALDOCTOR"));
  118. exams2.setExamStatus(9);
  119. exams2.update();
  120. WeixinService wService = ServiceFactory.getService(WeixinService.class);
  121. wService.requestWeixinQrcode(report.getId());*/
  122. } catch (Exception e) {
  123. // TODO: handle exception
  124. continue;
  125. }
  126. }
  127. } catch (Exception e) {
  128. // TODO: handle exception
  129. }
  130. }
  131. @Override
  132. public void stop() {
  133. // TODO Auto-generated method stub
  134. }
  135. private String creatId() {
  136. UUID id=UUID.randomUUID();
  137. String[] idd = id.toString().split("-");
  138. return idd[0]+idd[1]+idd[2];
  139. }
  140. private String getDoctorIdByName(String name) {
  141. if (name == null) {
  142. return null;
  143. }
  144. Doctors doctors = Doctors.dao.use("zskk").findFirst("SELECT * FROM doctors where instr(?,realname) and institution_id=51000001",name);
  145. if (doctors == null) {
  146. return null;
  147. }
  148. return doctors.getId();
  149. }
  150. private Date parseStringToDate(String dateStr) {
  151. if (dateStr == null) {
  152. return new Date();
  153. }
  154. SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  155. Date date = null;
  156. try {
  157. date = sdf.parse(dateStr);
  158. } catch (ParseException e) {
  159. // TODO Auto-generated catch block
  160. e.printStackTrace();
  161. }
  162. return date;
  163. }
  164. /**
  165. * 获取未出报告的检查列表
  166. * @param instutionId
  167. * @param number
  168. */
  169. public static JSONArray getExamList(String instutionId, Integer number) {
  170. Map<String,String> map = new HashMap<String,String>();
  171. map.put("institution_id", instutionId);
  172. map.put("num", number.toString());
  173. String content = postWithParameters(GET_EXAM_URL, map);
  174. JSONObject jsonObject = JSON.parseObject(content);
  175. if (!jsonObject.getString("msg").equals("success")) {
  176. return null;
  177. }
  178. JSONArray jsonArray = JSON.parseArray(jsonObject.getString("data"));
  179. return jsonArray;
  180. }
  181. /**
  182. * 发送POST请求
  183. *
  184. * @param url 目的地址
  185. * @param parameters 请求参数,Map类型。
  186. * @return 远程响应结果
  187. */
  188. public static String postWithParameters(String url, Map<String, String> parameters) {
  189. String result = "";// 返回的结果
  190. BufferedReader in = null;// 读取响应输入流
  191. PrintWriter out = null;
  192. StringBuffer sb = new StringBuffer();// 处理请求参数
  193. String params = "";// 编码之后的参数
  194. try {
  195. // 编码请求参数
  196. if (parameters.size() == 1) {
  197. for (String name : parameters.keySet()) {
  198. sb.append(name).append("=").append(
  199. java.net.URLEncoder.encode(parameters.get(name),
  200. "UTF-8"));
  201. }
  202. params = sb.toString();
  203. } else {
  204. for (String name : parameters.keySet()) {
  205. sb.append(name).append("=").append(
  206. java.net.URLEncoder.encode(parameters.get(name),
  207. "UTF-8")).append("&");
  208. }
  209. String temp_params = sb.toString();
  210. //System.out.println(temp_params);
  211. params = temp_params.substring(0, temp_params.length() - 1);
  212. System.out.println(params);
  213. }
  214. //params = java.net.URLEncoder.encode(params, "UTF-8");
  215. // 创建URL对象
  216. java.net.URL connURL = new java.net.URL(url);
  217. // 打开URL连接
  218. java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
  219. .openConnection();
  220. // 设置通用属性
  221. httpConn.setRequestProperty("Accept", "*/*");
  222. httpConn.setRequestProperty("Connection", "Keep-Alive");
  223. httpConn.setRequestProperty("User-Agent",
  224. "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
  225. // 设置POST方式
  226. httpConn.setDoInput(true);
  227. httpConn.setDoOutput(true);
  228. // 获取HttpURLConnection对象对应的输出流
  229. // out = new PrintWriter(httpConn.getOutputStream()); // 用PrintWriter进行包装
  230. // out.println(params);
  231. out = new PrintWriter(httpConn.getOutputStream());
  232. // 发送请求参数
  233. out.write(params);
  234. // flush输出流的缓冲
  235. out.flush();
  236. // 定义BufferedReader输入流来读取URL的响应,设置编码方式
  237. in = new BufferedReader(new InputStreamReader(httpConn
  238. .getInputStream(), "UTF-8"));
  239. String line;
  240. // 读取返回的内容
  241. while ((line = in.readLine()) != null) {
  242. result += line;
  243. }
  244. } catch (Exception e) {
  245. e.printStackTrace();
  246. } finally {
  247. try {
  248. if (out != null) {
  249. out.close();
  250. }
  251. if (in != null) {
  252. in.close();
  253. }
  254. } catch (IOException ex) {
  255. ex.printStackTrace();
  256. }
  257. }
  258. return result;
  259. }
  260. public static String post(String url, String jsonString) {
  261. CloseableHttpResponse response = null;
  262. BufferedReader in = null;
  263. String result = "";
  264. try {
  265. HttpPost httpPost = new HttpPost(url);
  266. RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30000).setConnectionRequestTimeout(30000).setSocketTimeout(30000).build();
  267. httpPost.setConfig(requestConfig);
  268. httpPost.setConfig(requestConfig);
  269. httpPost.addHeader("Content-type", "application/json; charset=utf-8");
  270. httpPost.setHeader("Accept", "application/json");
  271. httpPost.setEntity(new StringEntity(jsonString, Charset.forName("UTF-8")));
  272. response = httpClient.execute(httpPost);
  273. in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
  274. StringBuffer sb = new StringBuffer("");
  275. String line = "";
  276. String NL = System.getProperty("line.separator");
  277. while ((line = in.readLine()) != null) {
  278. sb.append(line + NL);
  279. }
  280. in.close();
  281. result = sb.toString();
  282. //System.out.println(result);
  283. } catch (IOException e) {
  284. e.printStackTrace();
  285. } finally {
  286. try {
  287. if (null != response) {
  288. response.close();
  289. }
  290. } catch (IOException e) {
  291. e.printStackTrace();
  292. }
  293. }
  294. return result;
  295. }
  296. }