Commit 897ab3c79c7fd6f466044b09552815de14d3d464
1 parent
23a86f006b
Exists in
master
and in
8 other branches
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
- platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java
- platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java
- platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java
- platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml
- platform-reportData/src/test/sql.txt
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
platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java
View file @
897ab3c
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; |