From 897ab3c79c7fd6f466044b09552815de14d3d464 Mon Sep 17 00:00:00 2001 From: baohanddd Date: Wed, 6 Jul 2016 17:10:22 +0800 Subject: [PATCH] add statistics(map) common index --- .../web/controller/StatisticsController.java | 89 ++++++++++++++++++++-- .../platform/reportdata/dao/StatisticsMapper.java | 7 ++ .../reportdata/service/StatisticsService.java | 7 ++ .../service/impl/StatisticsServiceImpl.java | 5 ++ .../main/resources/reportOrm/StatisticsMapper.xml | 59 ++++++++++++++ platform-reportData/src/test/sql.txt | 39 ++++++++++ 6 files changed, 201 insertions(+), 5 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java index 13fff25..6e7259a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java @@ -74,7 +74,7 @@ public class StatisticsController extends BaseController { Map mapsData = new HashMap<>(); Map riskColorMap = new HashMap<>(); - Option areaBarOption = buildBarOption("建档&高危人数", null); + Option areaBarOption = buildyBarOption("建档&高危人数", null); areaBarOption.getLegend().getData().add("近30天建档人数"); areaBarOption.getLegend().getData().add("当前高危总人数"); areaBarOption.getLegend().setOrient("horizontal"); @@ -148,7 +148,7 @@ public class StatisticsController extends BaseController { // 高危数据 List currentRiskList = statisticsService.queryRisks(new AreaDataQuery()); - Option groupRiskOption = buildBarOption("当前高危人数", null); + Option groupRiskOption = buildyBarOption("当前高危人数", null); groupRiskOption.getTooltip().setShow(true); List groupRiskSeriesList = new ArrayList<>(); Series groupRiskSeries = new Series(); @@ -240,9 +240,9 @@ public class StatisticsController extends BaseController { firstmap.put(month, areaData.getVal()); } if (secondmap.containsKey(month)) { - secondmap.put(month, secondmap.get(month) + areaData.getVal()); + secondmap.put(month, secondmap.get(month) + areaData.getVal2()); } else { - secondmap.put(month, areaData.getVal()); + secondmap.put(month, areaData.getVal2()); } } reportMonthMap.put("初诊人数", firstmap); @@ -250,6 +250,24 @@ public class StatisticsController extends BaseController { Option reportMonthOption = buildLineOption("初诊&复诊人数", null, reportMonthMap, buildDefaultMonth(12)); + // 近6个月高危数据(按颜色分组) + Map> groupRiskMonthMap = new HashMap<>(); + for (AreaData areaData:riskMonthList) { + String groupName = areaData.getGroupName().replace("预警", ""); + Map grmap = groupRiskMonthMap.get(groupName); + if (grmap == null) { + grmap = new HashMap<>(); + groupRiskMonthMap.put(groupName, grmap); + } + String month = buildMonth(areaData.getYear()); + if (grmap.containsKey(month)) { + grmap.put(month, grmap.get(month) + areaData.getVal()); + } else { + grmap.put(month, areaData.getVal()); + } + } + Option groupRiskMonthOption = buildxBarOption("高危历史人数", null, groupRiskMonthMap, buildDefaultMonth(6), colormap); + result.put("type", 1); result.put("kvData", kvData); @@ -258,6 +276,7 @@ public class StatisticsController extends BaseController { result.put("riskOption", groupRiskOption); result.put("patientMonthOption", patientMonthOption); result.put("reportMonthOption", reportMonthOption); + result.put("groupRiskMonthOption", groupRiskMonthOption); ResultUtils.buildSuccessResultAndWrite(response, result); } @@ -362,7 +381,7 @@ public class StatisticsController extends BaseController { return option; } - private Option buildBarOption(String titleText, String subTitle) { + private Option buildyBarOption(String titleText, String subTitle) { Option option = new Option(); Title title = new Title(); title.setText(titleText); @@ -400,4 +419,64 @@ public class StatisticsController extends BaseController { return option; } + private Option buildxBarOption(String titleText, String subTitle, Map> map, List xData, Map colormap) { + Option option = new Option(); + Title title = new Title(); + title.setText(titleText); + title.setSubtext(subTitle); + option.setTitle(title); + Tooltip tooltip = new Tooltip(); + tooltip.setTrigger("axis"); + AxisPointer axisPointer = new AxisPointer(); + axisPointer.setType("shadow"); + tooltip.setAxisPointer(axisPointer); + option.setTooltip(tooltip); + Legend legend = new Legend(); + List tempList = new ArrayList(); + legend.setData(tempList); + option.setLegend(legend); + Grid grid = new Grid(); + grid.setContainLabel(true); + grid.setTop("55px"); + grid.setLeft("3%"); + grid.setRight("3%"); + grid.setBottom("3%"); + option.setGrid(grid); + AxisPointer xAxis = new AxisPointer(); + xAxis.setType("value"); + List gapList = new ArrayList(); + gapList.add(0); + gapList.add(0.1); + xAxis.setBoundaryGap(gapList); + option.setyAxis(xAxis); + List seriesList = new ArrayList<>(); + option.setSeries(seriesList); + for (String groupName:map.keySet()) { + Map sub = map.get(groupName); + Series series = new Series(); + series.setName(groupName); + series.setType("bar"); + List list = new ArrayList<>(); + series.setData(list); + for (Object o:xData) { + if (sub.get(o) == null) { + list.add(0); + } else if (colormap.containsKey(groupName)) { + Data data = new Data(); + data.setValue(sub.get(o)); + data.setItemStyle(new ItemStyle(new Normal(true,colormap.get(groupName)),null)); + list.add(data); + } else { + list.add(sub.get(o)); + } + } + seriesList.add(series); + } + AxisPointer yAxis = new AxisPointer(); + yAxis.setType("category"); + yAxis.setData(xData); + option.setxAxis(yAxis); + return option; + } + } diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java index b0dd3af..eecc931 100644 --- a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java @@ -98,4 +98,11 @@ public interface StatisticsMapper { */ public List queryHrefYearRisks(AreaDataQuery query); + /** + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组) + * @param query + * @return + */ + public List queryDaysRisks(AreaDataQuery query); + } diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java index e0860b3..ebaaa57 100644 --- a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java @@ -98,4 +98,11 @@ public interface StatisticsService { */ public List queryHrefYearRisks(AreaDataQuery query); + /** + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组) + * @param query + * @return + */ + public List queryDaysRisks(AreaDataQuery query); + } diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java index ee9bb4b..1824b34 100644 --- a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java @@ -87,4 +87,9 @@ public class StatisticsServiceImpl implements StatisticsService { public List queryHrefYearRisks(AreaDataQuery query) { return statisticsMapper.queryHrefYearRisks(query); } + + @Override + public List queryDaysRisks(AreaDataQuery query) { + return statisticsMapper.queryDaysRisks(query); + } } diff --git a/platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml b/platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml index 09ce2ab..8b9fb24 100644 --- a/platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml +++ b/platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml @@ -574,4 +574,63 @@ ORDER BY E.YEAR_MONTH ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH + + + \ No newline at end of file diff --git a/platform-reportData/src/test/sql.txt b/platform-reportData/src/test/sql.txt index 5e7fb79..a06b72b 100644 --- a/platform-reportData/src/test/sql.txt +++ b/platform-reportData/src/test/sql.txt @@ -509,6 +509,45 @@ GROUP BY D.PROVINCE_ID, E.YEAR_MONTH ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH +------------------------------------------------------- +6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组) +SELECT D.PROVINCE_ID as province_id, + D.PROVINCE as province_name, + D.CITY_ID as city_id, + D.CITY as city_name, + D.AREA_COUNTY_ID as area_id, + D.AREA_COUNTY as area_name, + F.HIGH_RISK_GROUP as group_name, + E.DATE_2 as year, + COUNT(A.RECORD_ID) AS val +FROM ODS_F_GRAVIDA_RECORD A, + ODS_F_EXAMINE_HISTORY B, + ODS_D_HOSPITAL C, + ODS_D_AREA_COUNTY D, + ODS_D_DIM_DATE E, + ODS_F_HIGH_RISK_VALUE F +WHERE A.RECORD_ID=B.RECORD_ID + AND A.HOSPITAL_NO=C.HOSPITAL_NO + AND C.AREA_COUNTY_ID=D.AREA_COUNTY_ID + AND B.INSERT_DATE=E.DATE_1 + AND B.EXAMINE_ID=F.EXAMINE_ID + AND F.HIGH_RISK_CONTENT<>'健康' + AND F.HIGH_RISK_GROUP<>'其他' + AND B.EXAMINE_HISTORY_NUM=1 + AND B.INSERT_DATE<=TRUNC(SYSDATE) + AND B.INSERT_DATE>=(TRUNC(SYSDATE)-30) + AND D.PROVINCE_ID=130000 + AND D.CITY_ID=130300 + AND D.AREA_COUNTY_ID=130302 +GROUP BY D.PROVINCE_ID, + D.PROVINCE, + D.CITY_ID, + D.CITY, + D.AREA_COUNTY_ID, + D.AREA_COUNTY, + F.HIGH_RISK_GROUP, + E.DATE_2 +ORDER BY F.HIGH_RISK_GROUP,E.DATE_2; -- 1.8.3.1