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 f9e5b4b..7ce292c 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 @@ -10,6 +10,7 @@ import com.lymsh.platform.reportdata.model.AreaDataQuery; import com.lymsh.platform.reportdata.model.echarts.*; import com.lymsh.platform.reportdata.service.StatisticsService; import org.apache.commons.lang.StringUtils; +import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -175,7 +176,6 @@ public class StatisticsController extends BaseController { } else { return 1; } - } }); @@ -196,12 +196,31 @@ public class StatisticsController extends BaseController { groupRiskOption.setSeries(groupRiskSeriesList); + // 4. 按省或市或地区查询区域内近12个自然月每月建档人数 + List patientMonthList = statisticsService.queryMonthPatients(new AreaDataQuery()); + Map> patientMonthMap = new HashMap<>(); + for (AreaData areaData:patientMonthList) { + String regino = areaData.getProvinceName(); + Map subMap = null; + if (patientMonthMap.containsKey(regino)) { + subMap = patientMonthMap.get(regino); + } else { + subMap = new HashMap<>(); + patientMonthMap.put(regino, subMap); + } + String month = buildMonth(areaData.getYear()); + subMap.put(month, areaData.getVal()); + } + Option patientMonthOption = buildLineOption("建档人数", null, patientMonthMap, buildDefaultMonth(12)); + + result.put("type", 1); result.put("kvData", kvData); result.put("mapsOption", option); result.put("areaBarOption", areaBarOption); result.put("riskOption", groupRiskOption); + result.put("patientMonthOption", patientMonthOption); ResultUtils.buildSuccessResultAndWrite(response, result); } @@ -211,6 +230,72 @@ public class StatisticsController extends BaseController { + private String buildMonth(String year) { + return year.substring(0,4) + "-" + year.substring(4); + } + + private List buildDefaultMonth(Integer count) { + List list = new ArrayList<>(); + DateTime dt = new DateTime(); + for (count--;count>=0;count--) { + DateTime temp = dt.minusMonths(count); + list.add(temp.toString("yyyy-MM")); + } + return list; + } + + private Option buildLineOption(String titleText, String subTitle, Map> map, List xData) { + Option option = new Option(); + Title title = new Title(); + title.setText(titleText); + title.setSubtext(subTitle); + option.setTitle(title); + Tooltip tooltip = new Tooltip(); + tooltip.setTrigger("axis"); + tooltip.setShow(true); + option.setTooltip(tooltip); + List legendData = new ArrayList<>(); + Legend legend = new Legend(); + legend.setTop("50px"); + legend.setLeft("center"); + legend.setData(legendData); + option.setLegend(legend); + Grid grid = new Grid(); + grid.setContainLabel(true); + grid.setTop("80px"); + grid.setLeft("3%"); + grid.setRight("3%"); + grid.setBottom("3%"); + option.setGrid(grid); + AxisPointer x = new AxisPointer(); + x.setType("category"); + x.setData(xData); + option.setxAxis(x); + AxisPointer y = new AxisPointer(); + y.setType("value"); + option.setyAxis(y); + List seriesList = new ArrayList<>(); + option.setSeries(seriesList); + for (String regino:map.keySet()) { + legendData.add(regino); + Map sub = map.get(regino); + Series series = new Series(); + series.setName(regino); + series.setType("line"); + List list = new ArrayList<>(); + series.setData(list); + for (Object o:xData) { + if (sub.get(o) == null) { + list.add(0); + } else { + list.add(sub.get(o)); + } + } + seriesList.add(series); + } + return option; + } + private Option buildMapOption(String titleText, String subTitle) { Option option = new Option(); Title title = new Title();