Commit 897ab3c79c7fd6f466044b09552815de14d3d464

Authored by baohanddd
1 parent 23a86f006b

add statistics(map) common index

Showing 6 changed files with 201 additions and 5 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java View file @ 897ab3c
... ... @@ -74,7 +74,7 @@
74 74 Map<String, Integer> mapsData = new HashMap<>();
75 75 Map<String, String> riskColorMap = new HashMap<>();
76 76  
77   - Option areaBarOption = buildBarOption("建档&高危人数", null);
  77 + Option areaBarOption = buildyBarOption("建档&高危人数", null);
78 78 areaBarOption.getLegend().getData().add("近30天建档人数");
79 79 areaBarOption.getLegend().getData().add("当前高危总人数");
80 80 areaBarOption.getLegend().setOrient("horizontal");
... ... @@ -148,7 +148,7 @@
148 148  
149 149 // 高危数据
150 150 List<AreaData> currentRiskList = statisticsService.queryRisks(new AreaDataQuery());
151   - Option groupRiskOption = buildBarOption("当前高危人数", null);
  151 + Option groupRiskOption = buildyBarOption("当前高危人数", null);
152 152 groupRiskOption.getTooltip().setShow(true);
153 153 List<Object> groupRiskSeriesList = new ArrayList<>();
154 154 Series groupRiskSeries = new Series();
155 155  
... ... @@ -240,9 +240,9 @@
240 240 firstmap.put(month, areaData.getVal());
241 241 }
242 242 if (secondmap.containsKey(month)) {
243   - secondmap.put(month, secondmap.get(month) + areaData.getVal());
  243 + secondmap.put(month, secondmap.get(month) + areaData.getVal2());
244 244 } else {
245   - secondmap.put(month, areaData.getVal());
  245 + secondmap.put(month, areaData.getVal2());
246 246 }
247 247 }
248 248 reportMonthMap.put("初诊人数", firstmap);
249 249  
... ... @@ -250,7 +250,25 @@
250 250 Option reportMonthOption = buildLineOption("初诊&复诊人数", null, reportMonthMap, buildDefaultMonth(12));
251 251  
252 252  
  253 + // 近6个月高危数据(按颜色分组)
  254 + Map<String, Map<String, Integer>> groupRiskMonthMap = new HashMap<>();
  255 + for (AreaData areaData:riskMonthList) {
  256 + String groupName = areaData.getGroupName().replace("预警", "");
  257 + Map<String, Integer> grmap = groupRiskMonthMap.get(groupName);
  258 + if (grmap == null) {
  259 + grmap = new HashMap<>();
  260 + groupRiskMonthMap.put(groupName, grmap);
  261 + }
  262 + String month = buildMonth(areaData.getYear());
  263 + if (grmap.containsKey(month)) {
  264 + grmap.put(month, grmap.get(month) + areaData.getVal());
  265 + } else {
  266 + grmap.put(month, areaData.getVal());
  267 + }
  268 + }
  269 + Option groupRiskMonthOption = buildxBarOption("高危历史人数", null, groupRiskMonthMap, buildDefaultMonth(6), colormap);
253 270  
  271 +
254 272 result.put("type", 1);
255 273 result.put("kvData", kvData);
256 274 result.put("mapsOption", option);
... ... @@ -258,6 +276,7 @@
258 276 result.put("riskOption", groupRiskOption);
259 277 result.put("patientMonthOption", patientMonthOption);
260 278 result.put("reportMonthOption", reportMonthOption);
  279 + result.put("groupRiskMonthOption", groupRiskMonthOption);
261 280 ResultUtils.buildSuccessResultAndWrite(response, result);
262 281 }
263 282  
... ... @@ -362,7 +381,7 @@
362 381 return option;
363 382 }
364 383  
365   - private Option buildBarOption(String titleText, String subTitle) {
  384 + private Option buildyBarOption(String titleText, String subTitle) {
366 385 Option option = new Option();
367 386 Title title = new Title();
368 387 title.setText(titleText);
... ... @@ -397,6 +416,66 @@
397 416 List<Object> dataList = new ArrayList<Object>();
398 417 yAxis.setData(dataList);
399 418 option.setyAxis(yAxis);
  419 + return option;
  420 + }
  421 +
  422 + private Option buildxBarOption(String titleText, String subTitle, Map<String, Map<String, Integer>> map, List<Object> xData, Map<String, String> colormap) {
  423 + Option option = new Option();
  424 + Title title = new Title();
  425 + title.setText(titleText);
  426 + title.setSubtext(subTitle);
  427 + option.setTitle(title);
  428 + Tooltip tooltip = new Tooltip();
  429 + tooltip.setTrigger("axis");
  430 + AxisPointer axisPointer = new AxisPointer();
  431 + axisPointer.setType("shadow");
  432 + tooltip.setAxisPointer(axisPointer);
  433 + option.setTooltip(tooltip);
  434 + Legend legend = new Legend();
  435 + List<Object> tempList = new ArrayList<Object>();
  436 + legend.setData(tempList);
  437 + option.setLegend(legend);
  438 + Grid grid = new Grid();
  439 + grid.setContainLabel(true);
  440 + grid.setTop("55px");
  441 + grid.setLeft("3%");
  442 + grid.setRight("3%");
  443 + grid.setBottom("3%");
  444 + option.setGrid(grid);
  445 + AxisPointer xAxis = new AxisPointer();
  446 + xAxis.setType("value");
  447 + List<Object> gapList = new ArrayList<Object>();
  448 + gapList.add(0);
  449 + gapList.add(0.1);
  450 + xAxis.setBoundaryGap(gapList);
  451 + option.setyAxis(xAxis);
  452 + List<Object> seriesList = new ArrayList<>();
  453 + option.setSeries(seriesList);
  454 + for (String groupName:map.keySet()) {
  455 + Map<String, Integer> sub = map.get(groupName);
  456 + Series series = new Series();
  457 + series.setName(groupName);
  458 + series.setType("bar");
  459 + List<Object> list = new ArrayList<>();
  460 + series.setData(list);
  461 + for (Object o:xData) {
  462 + if (sub.get(o) == null) {
  463 + list.add(0);
  464 + } else if (colormap.containsKey(groupName)) {
  465 + Data data = new Data();
  466 + data.setValue(sub.get(o));
  467 + data.setItemStyle(new ItemStyle(new Normal(true,colormap.get(groupName)),null));
  468 + list.add(data);
  469 + } else {
  470 + list.add(sub.get(o));
  471 + }
  472 + }
  473 + seriesList.add(series);
  474 + }
  475 + AxisPointer yAxis = new AxisPointer();
  476 + yAxis.setType("category");
  477 + yAxis.setData(xData);
  478 + option.setxAxis(yAxis);
400 479 return option;
401 480 }
402 481  
platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java View file @ 897ab3c
... ... @@ -98,5 +98,12 @@
98 98 */
99 99 public List<AreaData> queryHrefYearRisks(AreaDataQuery query);
100 100  
  101 + /**
  102 + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  103 + * @param query
  104 + * @return
  105 + */
  106 + public List<AreaData> queryDaysRisks(AreaDataQuery query);
  107 +
101 108 }
platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java View file @ 897ab3c
... ... @@ -98,5 +98,12 @@
98 98 */
99 99 public List<AreaData> queryHrefYearRisks(AreaDataQuery query);
100 100  
  101 + /**
  102 + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  103 + * @param query
  104 + * @return
  105 + */
  106 + public List<AreaData> queryDaysRisks(AreaDataQuery query);
  107 +
101 108 }
platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java View file @ 897ab3c
... ... @@ -87,5 +87,10 @@
87 87 public List<AreaData> queryHrefYearRisks(AreaDataQuery query) {
88 88 return statisticsMapper.queryHrefYearRisks(query);
89 89 }
  90 +
  91 + @Override
  92 + public List<AreaData> queryDaysRisks(AreaDataQuery query) {
  93 + return statisticsMapper.queryDaysRisks(query);
  94 + }
90 95 }
platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml View file @ 897ab3c
... ... @@ -574,5 +574,64 @@
574 574 ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH
575 575 </select>
576 576  
  577 + <!--6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)-->
  578 + <select id="queryDaysRisks" resultMap="AreaDataResultMap"
  579 + parameterType="com.lymsh.platform.reportdata.model.AreaDataQuery">
  580 + SELECT D.PROVINCE_ID as province_id,
  581 + D.PROVINCE as province_name,
  582 + <if test="provinceId != null and provinceId != ''">
  583 + D.CITY_ID as city_id,
  584 + D.CITY as city_name,
  585 + </if>
  586 + <if test="cityId != null and cityId != ''">
  587 + D.CITY_ID as city_id,
  588 + D.CITY as city_name,
  589 + D.AREA_COUNTY_ID as area_id,
  590 + D.AREA_COUNTY as area_name,
  591 + </if>
  592 + F.HIGH_RISK_GROUP as group_name,
  593 + E.DATE_2 as year,
  594 + COUNT(A.RECORD_ID) AS val
  595 + FROM ODS_F_GRAVIDA_RECORD A,
  596 + ODS_F_EXAMINE_HISTORY B,
  597 + ODS_D_HOSPITAL C,
  598 + ODS_D_AREA_COUNTY D,
  599 + ODS_D_DIM_DATE E,
  600 + ODS_F_HIGH_RISK_VALUE F
  601 + WHERE A.RECORD_ID=B.RECORD_ID
  602 + AND A.HOSPITAL_NO=C.HOSPITAL_NO
  603 + AND C.AREA_COUNTY_ID=D.AREA_COUNTY_ID
  604 + AND B.INSERT_DATE=E.DATE_1
  605 + AND B.EXAMINE_ID=F.EXAMINE_ID
  606 + <![CDATA[
  607 + AND F.HIGH_RISK_CONTENT<>'健康'
  608 + AND F.HIGH_RISK_GROUP<>'其他'
  609 + AND B.EXAMINE_HISTORY_NUM=1
  610 + AND B.INSERT_DATE<=TRUNC(SYSDATE)
  611 + AND B.INSERT_DATE>=(TRUNC(SYSDATE)-${days})
  612 + ]]>
  613 + <if test="provinceId != null and provinceId != ''">
  614 + AND D.PROVINCE_ID=#{provinceId}
  615 + </if>
  616 + <if test="cityId != null and cityId != ''">
  617 + AND D.CITY_ID=#{cityId}
  618 + </if>
  619 + GROUP BY D.PROVINCE_ID,
  620 + D.PROVINCE,
  621 + <if test="provinceId != null and provinceId != ''">
  622 + D.CITY_ID,
  623 + D.CITY,
  624 + </if>
  625 + <if test="cityId != null and cityId != ''">
  626 + D.CITY_ID,
  627 + D.CITY,
  628 + D.AREA_COUNTY_ID,
  629 + D.AREA_COUNTY,
  630 + </if>
  631 + F.HIGH_RISK_GROUP,
  632 + E.DATE_2
  633 + ORDER BY F.HIGH_RISK_GROUP,E.DATE_2;
  634 + </select>
  635 +
577 636 </mapper>
platform-reportData/src/test/sql.txt View file @ 897ab3c
... ... @@ -508,4 +508,44 @@
508 508 F.HIGH_RISK_GROUP,
509 509 E.YEAR_MONTH
510 510 ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH
  511 +
  512 +-------------------------------------------------------
  513 +6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  514 +SELECT D.PROVINCE_ID as province_id,
  515 + D.PROVINCE as province_name,
  516 + D.CITY_ID as city_id,
  517 + D.CITY as city_name,
  518 + D.AREA_COUNTY_ID as area_id,
  519 + D.AREA_COUNTY as area_name,
  520 + F.HIGH_RISK_GROUP as group_name,
  521 + E.DATE_2 as year,
  522 + COUNT(A.RECORD_ID) AS val
  523 +FROM ODS_F_GRAVIDA_RECORD A,
  524 + ODS_F_EXAMINE_HISTORY B,
  525 + ODS_D_HOSPITAL C,
  526 + ODS_D_AREA_COUNTY D,
  527 + ODS_D_DIM_DATE E,
  528 + ODS_F_HIGH_RISK_VALUE F
  529 +WHERE A.RECORD_ID=B.RECORD_ID
  530 + AND A.HOSPITAL_NO=C.HOSPITAL_NO
  531 + AND C.AREA_COUNTY_ID=D.AREA_COUNTY_ID
  532 + AND B.INSERT_DATE=E.DATE_1
  533 + AND B.EXAMINE_ID=F.EXAMINE_ID
  534 + AND F.HIGH_RISK_CONTENT<>'健康'
  535 + AND F.HIGH_RISK_GROUP<>'其他'
  536 + AND B.EXAMINE_HISTORY_NUM=1
  537 + AND B.INSERT_DATE<=TRUNC(SYSDATE)
  538 + AND B.INSERT_DATE>=(TRUNC(SYSDATE)-30)
  539 + AND D.PROVINCE_ID=130000
  540 + AND D.CITY_ID=130300
  541 + AND D.AREA_COUNTY_ID=130302
  542 +GROUP BY D.PROVINCE_ID,
  543 + D.PROVINCE,
  544 + D.CITY_ID,
  545 + D.CITY,
  546 + D.AREA_COUNTY_ID,
  547 + D.AREA_COUNTY,
  548 + F.HIGH_RISK_GROUP,
  549 + E.DATE_2
  550 +ORDER BY F.HIGH_RISK_GROUP,E.DATE_2;