diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/HttpClientUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/HttpClientUtil.java index 383d340..04822f6 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/HttpClientUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/HttpClientUtil.java @@ -169,6 +169,11 @@ public class HttpClientUtil { e.printStackTrace(); } } + if (httpPost != null) + { + httpPost.releaseConnection(); + } + } return httpStr; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java index 6b716d7..27c1a1f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java @@ -125,6 +125,23 @@ public class TestController { private BabyBookbuildingService babyBookbuildingService; + static Map highRisks = new HashMap<>(); + static { + highRisks.put("f3a1c08f-a2c1-4e93-8ffd-398af9e2d8c9","5a40c763422b03d4ad2bf7c1"); // 流产≥2次---------> 不良孕产史(各类流产≥3次、早产、围产儿死亡、出生缺陷、异位妊娠、滋养细胞疾病等) + highRisks.put("ee3ba99e-64c0-4aab-b0a4-71dec0d61ca6","5a40c772422b03d4ad2bf7c4"); //人工受精------->辅助生殖妊娠 + highRisks.put("a8094bd6-de5d-4b95-9a1a-59ae376bb2a6","9310676a-9482-4da5-9ba8-e2a302843ea0"); //高血压------> 妊娠期高血压疾病(除外红、橙色) + highRisks.put("3be742b2-ed07-425e-a435-8a19fc8ba86e","52986b9e-5a44-4613-9af5-07564f15b703"); //臀位 -------->≥36周胎位不正 + highRisks.put("cbeb4447-f4cb-4c2e-96f3-973a0c701fc3","8856c4da-57e3-42af-820a-25c991dde3f0"); //BMI≥32------>BMI≥28 + highRisks.put("251833c7-7ac1-410f-a6e7-c50f4008d5ed","5a41f715422b03d4ad2bf7f7"); // 中度贫血 ------>妊娠合并贫血(Hb 60-110g/L) + highRisks.put("2adbce90-4066-4980-b7a0-14012cbfea52","d7ceb752-ce2a-4901-a94e-51b73ccefc52"); // 心律失常-----需药物治疗的心肌炎后遗症、心律失常等 + highRisks.put("8745081d-1f37-45f7-b5be-94a208686bd2","ecb2fd70-1e85-455c-8f62-ee7b9c71e48c"); // 甲减---------需药物治疗的甲状腺疾病 + highRisks.put("5cba13c2-5cb5-46c9-905a-41708d13d45e","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发心脏病 ----糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 + highRisks.put("0b51b328-1c8f-41de-90de-ef3b76341c1b","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发蛋白尿 ----糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 + highRisks.put("80587d8a-009e-46aa-87e5-57996b0708b1","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发肾功能不全 ---糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 + + } + + @ResponseBody @RequestMapping("/init/patient/weight") @@ -1437,18 +1454,6 @@ public class TestController { @RequestMapping(value = "/upateNewHighRisk", method = RequestMethod.GET) @ResponseBody public String upateNewHighRisk(@RequestParam(required = false) String hospitalId, @RequestParam(required = false) String patientId) { - final Map highRisks = new HashMap<>(); - highRisks.put("f3a1c08f-a2c1-4e93-8ffd-398af9e2d8c9","5a40c763422b03d4ad2bf7c1"); // 流产≥2次---------> 不良孕产史(各类流产≥3次、早产、围产儿死亡、出生缺陷、异位妊娠、滋养细胞疾病等) - highRisks.put("ee3ba99e-64c0-4aab-b0a4-71dec0d61ca6","5a40c772422b03d4ad2bf7c4"); //人工受精------->辅助生殖妊娠 - highRisks.put("a8094bd6-de5d-4b95-9a1a-59ae376bb2a6","9310676a-9482-4da5-9ba8-e2a302843ea0"); //高血压------> 妊娠期高血压疾病(除外红、橙色) - highRisks.put("3be742b2-ed07-425e-a435-8a19fc8ba86e","52986b9e-5a44-4613-9af5-07564f15b703"); //臀位 -------->≥36周胎位不正 - highRisks.put("cbeb4447-f4cb-4c2e-96f3-973a0c701fc3","8856c4da-57e3-42af-820a-25c991dde3f0"); //BMI≥32------>BMI≥28 - highRisks.put("251833c7-7ac1-410f-a6e7-c50f4008d5ed","5a41f715422b03d4ad2bf7f7"); // 中度贫血 ------>妊娠合并贫血(Hb 60-110g/L) - highRisks.put("2adbce90-4066-4980-b7a0-14012cbfea52","d7ceb752-ce2a-4901-a94e-51b73ccefc52"); // 心律失常-----需药物治疗的心肌炎后遗症、心律失常等 - highRisks.put("8745081d-1f37-45f7-b5be-94a208686bd2","ecb2fd70-1e85-455c-8f62-ee7b9c71e48c"); // 甲减---------需药物治疗的甲状腺疾病 - highRisks.put("5cba13c2-5cb5-46c9-905a-41708d13d45e","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发心脏病 ----糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 - highRisks.put("0b51b328-1c8f-41de-90de-ef3b76341c1b","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发蛋白尿 ----糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 - highRisks.put("80587d8a-009e-46aa-87e5-57996b0708b1","d6cfcad8-c674-4624-b50d-8797d217f10c"); //糖尿病并发肾功能不全 ---糖尿病并发肾病V级、严重心血管病、增生性视网膜病变或玻璃体出血、周围神经病变等 OrganizationQuery organizationQuery = new OrganizationQuery(); organizationQuery.setYn(YnEnums.YES.getId()); @@ -1486,16 +1491,7 @@ public class TestController { for (Patients pat : tempList) { List patientRisk = pat.getRiskFactorId(); if (CollectionUtils.isNotEmpty(patientRisk)) { - int modCount = 0; - for (String key : highRisks.keySet()) - { - if (patientRisk.contains(key)) - { - patientRisk.remove(key); - patientRisk.add(highRisks.get(key)); - modCount++; - } - } + int modCount = doRiskHandle(patientRisk); if (modCount > 0) { pat.setRiskFactorId(patientRisk); @@ -1515,16 +1511,7 @@ public class TestController { List highrisks = JsonUtil.toList(highriskStr, String.class); if (CollectionUtils.isNotEmpty(highrisks)) { - int modCount = 0; - for (String key : highRisks.keySet()) - { - if (highrisks.contains(key)) - { - highrisks.remove(key); - highrisks.add(highRisks.get(key)); - modCount++; - } - } + int modCount = doRiskHandle(highrisks); if (modCount > 0) { cmodel.setHighrisk(JsonUtil.array2JsonString(highrisks)); @@ -1550,16 +1537,7 @@ public class TestController { if (CollectionUtils.isNotEmpty(highrisks)) { if (CollectionUtils.isNotEmpty(highrisks)) { - int modCount = 0; - for (String key : highRisks.keySet()) - { - if (highrisks.contains(key)) - { - highrisks.remove(key); - highrisks.add(highRisks.get(key)); - modCount++; - } - } + int modCount = doRiskHandle(highrisks); if (modCount > 0) { fmodel.setRiskFactor(JsonUtil.array2JsonString(highrisks)); @@ -1587,16 +1565,7 @@ public class TestController { { if (CollectionUtils.isNotEmpty(highrisks)) { - int modCount = 0; - for (String key : highRisks.keySet()) - { - if (highrisks.contains(key)) - { - highrisks.remove(key); - highrisks.add(highRisks.get(key)); - modCount++; - } - } + int modCount = doRiskHandle(highrisks); if (modCount > 0) { model.sethRisk(highrisks); @@ -1619,4 +1588,22 @@ public class TestController { return "upateNewHighRisk finish"; } + private int doRiskHandle(List patientRisk) + { + int modCount = 0; + for (String key : highRisks.keySet()) + { + if (patientRisk.contains(key)) + { + patientRisk.remove(key); + if (!patientRisk.contains(highRisks.get(key))) + { + patientRisk.add(highRisks.get(key)); + modCount++; + } + } + } + return modCount; + } + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java index 1275acd..fc3edd6 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java @@ -37,6 +37,8 @@ import org.springframework.stereotype.Service; import javax.print.attribute.standard.DateTimeAtCompleted; import java.io.File; import java.util.*; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; /** * Created by riecard on 16/9/26. @@ -98,6 +100,8 @@ public class SyncDataTaskService { @Qualifier("commonThreadPool") private ThreadPoolTaskExecutor commonThreadPool; + private Executor pool = Executors.newFixedThreadPool(5); + /** * 该方法是区域或者单体医院部署的把数据定时往某个环境上传 * (如往线上环境上传,mongo_sync_url就配置相应的线上的接收地址) @@ -127,49 +131,52 @@ public class SyncDataTaskService { { for (final String url : urls.keySet()) { - try{ - String json = HttpClientUtil.doPost("https://"+url+"/findSyncData", new HashMap(), "utf-8"); - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(json)) - { - List list = JsonUtil.toList(json, SyncDataModel.class); - System.out.println(DateUtil.getyyyy_MM_dd_hms(new Date())+url+" ; syncdata size = "+ list.size()); - int batchSize = 200; - int end = 0; - for (int i = 0; i < list.size(); i += batchSize) { - end = (end + batchSize); - if (end > list.size()) { - end = list.size(); - } - final List tempList = list.subList(i, end); - commonThreadPool.execute(new Runnable() { - @Override - public void run() { - if (CollectionUtils.isNotEmpty(tempList)) - { - StringBuffer ids = new StringBuffer(); - for (SyncDataModel model : tempList) { - boolean boo = mongoSyncService.syncData(model.getAction(), model.getDataId(), model.getClassName(), model.getJsonData()); - if (boo) { - ids.append(model.getId()); - ids.append(","); + pool.execute(new Runnable() { + @Override + public void run() { + try{ + String json = HttpClientUtil.doPost("https://"+url+"/findSyncData", new HashMap(), "utf-8"); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(json)) + { + List list = JsonUtil.toList(json, SyncDataModel.class); + System.out.println(DateUtil.getyyyy_MM_dd_hms(new Date())+url+" ; syncdata size = "+ list.size()); + int batchSize = 200; + int end = 0; + for (int i = 0; i < list.size(); i += batchSize) { + end = (end + batchSize); + if (end > list.size()) { + end = list.size(); + } + final List tempList = list.subList(i, end); + commonThreadPool.execute(new Runnable() { + @Override + public void run() { + if (CollectionUtils.isNotEmpty(tempList)) + { + StringBuffer ids = new StringBuffer(); + for (SyncDataModel model : tempList) { + boolean boo = mongoSyncService.syncData(model.getAction(), model.getDataId(), model.getClassName(), model.getJsonData()); + if (boo) { + ids.append(model.getId()); + ids.append(","); + } + } + if (ids.length() > 0) { + Map params = new HashMap(); + params.put("ids", ids.toString()); + HttpClientUtil.doPost("https://" + url + "/updateSyncData", params, "utf-8"); + } } } - if (ids.length() > 0) { - Map params = new HashMap(); - params.put("ids", ids.toString()); - HttpClientUtil.doPost("https://" + url + "/updateSyncData", params, "utf-8"); - } - } + }); } - }); + } + }catch(Exception ex){ + ExceptionUtils.catchException(ex, url+": syncData Error."); } } - }catch(Exception ex){ - ExceptionUtils.catchException(ex, url+": syncData Error."); - continue; - } + }); } - }