Commit 41a5720741ab13b75eb72abf0b1dbfc525682f44

Authored by liquanyu
1 parent bd86ec9a80

高危报表

Showing 3 changed files with 122 additions and 26 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java View file @ 41a5720
... ... @@ -16,6 +16,7 @@
16 16 import com.lyms.platform.operate.web.request.BabyCheckRequest;
17 17 import com.lyms.platform.operate.web.request.RiskPatientsQueryRequest;
18 18 import com.lyms.platform.operate.web.result.*;
  19 +import com.lyms.platform.operate.web.utils.HiskCountTask;
19 20 import com.lyms.platform.permission.model.Organization;
20 21 import com.lyms.platform.permission.model.Users;
21 22 import com.lyms.platform.permission.service.OrganizationService;
... ... @@ -29,6 +30,7 @@
29 30  
30 31 import java.text.DecimalFormat;
31 32 import java.util.*;
  33 +import java.util.concurrent.*;
32 34  
33 35 @Component
34 36 public class RiskReportFacade {
35 37  
36 38  
37 39  
38 40  
39 41  
... ... @@ -98,43 +100,45 @@
98 100 //总的孕妇条数
99 101 int allPatientCount = patientsService.queryPatientCount(patientsQuery);
100 102  
101   - List<RiskReportResult> results = new ArrayList<>();
  103 + List results = new ArrayList<>();
102 104  
103 105 BasicConfigQuery basicConfigQuery = new BasicConfigQuery();
104 106 basicConfigQuery.setYn(YnEnums.YES.getId());
105 107 basicConfigQuery.setParentId(SystemConfig.HIGH_RISK_ID);
106 108 basicConfigQuery.setEnable(1);
107 109  
  110 + List<Future> futures = new ArrayList<>();
108 111 List<BasicConfig> riskLevelConfig = basicConfigService.queryBasicConfig(basicConfigQuery);
109 112 if (CollectionUtils.isNotEmpty(riskLevelConfig))
110 113 {
  114 + ExecutorService pool = Executors.newFixedThreadPool(riskLevelConfig.size());
111 115 for(BasicConfig levelConfig : riskLevelConfig)
112 116 {
113   - basicConfigQuery.setParentId(levelConfig.getId());
114   - List<BasicConfig> riskConfig = basicConfigService.queryBasicConfig(basicConfigQuery);
  117 + Callable c = new HiskCountTask( basicConfigService,
  118 + patientsService, levelConfig,
  119 + patientsQuery,
  120 + allPatientCount);
  121 + Future f = pool.submit(c);
  122 + futures.add(f);
  123 + }
  124 + // 关闭线程池
  125 + pool.shutdown();
  126 + }
115 127  
116   - if (CollectionUtils.isNotEmpty(riskConfig)) {
117   - for (BasicConfig config : riskConfig) {
118   - patientsQuery.setrFactor(config.getId());
119   - //单个高危孕妇条数
120   - int riskPatientCount = patientsService.queryPatientCount(patientsQuery);
121   - if (riskPatientCount > 0)
122   - {
123   - RiskReportResult risk = new RiskReportResult();
124   - risk.setHighRiskId(config.getId());
125   - risk.setHighRisk(config.getName());
126   - risk.setRiskCount(String.valueOf(riskPatientCount));
127   -
128   - DecimalFormat df = new DecimalFormat("0.00");
129   - String percent = df.format((double)riskPatientCount/allPatientCount*100)+"%";
130   - risk.setPercent(percent);
131   - risk.setHighLevel(levelConfig.getName());
132   - results.add(risk);
133   - }
134   - }
  128 + if (CollectionUtils.isNotEmpty(futures))
  129 + {
  130 + for (Future f : futures)
  131 + {
  132 + try {
  133 + results.add(f.get());
  134 + } catch (InterruptedException e) {
  135 + e.printStackTrace();
  136 + } catch (ExecutionException e) {
  137 + e.printStackTrace();
135 138 }
136 139 }
137 140 }
  141 +
138 142 return new BaseObjectResponse()
139 143 .setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(results);
140 144 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/RiskReportResult.java View file @ 41a5720
1 1 package com.lyms.platform.operate.web.result;
2 2  
3 3  
  4 +import java.util.List;
  5 +
4 6 /**
5 7 * 高危报表结果
6 8 * Created by lqy on 2016/11/28
... ... @@ -11,7 +13,7 @@
11 13 private String highRiskId;
12 14  
13 15 //风险等级
14   - private String highLevel;
  16 + private List highLevel;
15 17  
16 18 //高危因素
17 19 private String highRisk;
18 20  
... ... @@ -30,11 +32,11 @@
30 32 this.highRiskId = highRiskId;
31 33 }
32 34  
33   - public String getHighLevel() {
  35 + public List getHighLevel() {
34 36 return highLevel;
35 37 }
36 38  
37   - public void setHighLevel(String highLevel) {
  39 + public void setHighLevel(List highLevel) {
38 40 this.highLevel = highLevel;
39 41 }
40 42  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/HiskCountTask.java View file @ 41a5720
  1 +package com.lyms.platform.operate.web.utils;
  2 +
  3 +import com.lyms.platform.biz.service.BasicConfigService;
  4 +import com.lyms.platform.biz.service.PatientsService;
  5 +import com.lyms.platform.common.enums.RiskDefaultTypeEnum;
  6 +import com.lyms.platform.common.enums.YnEnums;
  7 +import com.lyms.platform.common.utils.SystemConfig;
  8 +import com.lyms.platform.operate.web.result.RiskReportResult;
  9 +import com.lyms.platform.pojo.BasicConfig;
  10 +import com.lyms.platform.query.BasicConfigQuery;
  11 +import com.lyms.platform.query.PatientsQuery;
  12 +import org.apache.commons.collections.CollectionUtils;
  13 +
  14 +import java.text.DecimalFormat;
  15 +import java.util.ArrayList;
  16 +import java.util.HashMap;
  17 +import java.util.List;
  18 +import java.util.Map;
  19 +import java.util.concurrent.Callable;
  20 +
  21 +/**
  22 + * Created by Administrator on 2016/11/30.
  23 + */
  24 +public class HiskCountTask implements Callable {
  25 +
  26 + private PatientsService patientsService;
  27 + private BasicConfigService basicConfigService;
  28 + private BasicConfig basicConfig;
  29 + private PatientsQuery patientsQuery;
  30 + private int allPatientCount;
  31 +
  32 + public HiskCountTask(BasicConfigService basicConfigService,
  33 + PatientsService patientsService,BasicConfig basicConfig,
  34 + PatientsQuery patientsQuery,
  35 + int allPatientCount)
  36 + {
  37 + this.basicConfigService = basicConfigService;
  38 + this.patientsService = patientsService;
  39 + this.basicConfig = basicConfig;
  40 + this.patientsQuery = patientsQuery;
  41 + this.allPatientCount = allPatientCount;
  42 + }
  43 + @Override
  44 + public List<RiskReportResult> call() throws Exception {
  45 +
  46 + BasicConfigQuery basicConfigQuery = new BasicConfigQuery();
  47 + basicConfigQuery.setYn(YnEnums.YES.getId());
  48 + basicConfigQuery.setParentId(SystemConfig.HIGH_RISK_ID);
  49 + basicConfigQuery.setEnable(1);
  50 +
  51 + List<RiskReportResult> results = new ArrayList<>();
  52 + basicConfigQuery.setParentId(basicConfig.getId());
  53 + List<BasicConfig> riskConfig = basicConfigService.queryBasicConfig(basicConfigQuery);
  54 +
  55 + if (CollectionUtils.isNotEmpty(riskConfig)) {
  56 + for (BasicConfig config : riskConfig) {
  57 + patientsQuery.setrFactor(config.getId());
  58 + //单个高危孕妇条数
  59 + int riskPatientCount = patientsService.queryPatientCount(patientsQuery);
  60 + if (riskPatientCount > 0)
  61 + {
  62 + RiskReportResult risk = new RiskReportResult();
  63 + risk.setHighRiskId(config.getId());
  64 + risk.setHighRisk(config.getName());
  65 + risk.setRiskCount(String.valueOf(riskPatientCount));
  66 +
  67 + DecimalFormat df = new DecimalFormat("0.00");
  68 + String percent = df.format((double)riskPatientCount/allPatientCount*100)+"%";
  69 + risk.setPercent(percent);
  70 +
  71 + if (null != basicConfig) {
  72 + List level = new ArrayList();
  73 + Map map = new HashMap();
  74 + String name = basicConfig.getName();
  75 + if (name.indexOf("预警") > -1) {
  76 + name = name.replace("预警", "");
  77 + }
  78 + map.put("name", name);
  79 + map.put("color", "risk_" + RiskDefaultTypeEnum.getColor(name));
  80 + level.add(map);
  81 + risk.setHighLevel(level);
  82 + }
  83 +
  84 + results.add(risk);
  85 + }
  86 + }
  87 + }
  88 + return results;
  89 + }
  90 +}