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 05f69e7..de97496 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 @@ -6,6 +6,8 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.ResultUtils; import com.lymsh.platform.reportdata.model.AreaData; +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.springframework.beans.factory.annotation.Autowired; @@ -16,9 +18,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Created by Administrator on 2016/6/28 0028. @@ -44,4 +44,175 @@ public class StatisticsController extends BaseController { ResultUtils.buildSuccessResultAndWrite(response, result); } + /** + * totalIndex + * @param response + * @param type 1:全国,pid不传;2:全省,pid传省ID;3:全地区,pid传地区ID + * @param pid 省ID、地区ID + */ + @RequestMapping(value = "/total/index", method = RequestMethod.GET) + public void getTotalIndex(HttpServletResponse response, @RequestParam(value = "type")Integer type, @RequestParam(value = "pid", required = false)String pid) { + Map result= new HashMap(); + if (type == 1) { + // 地图数据 + List provinceRiskList = statisticsService.queryProvinceRisks(); + List provincePatientList = statisticsService.queryProvincePatients(); + Map kvData = new HashMap<>(); + Map mapsData = new HashMap<>(); + for (AreaData areaData:provincePatientList) { + String rigino = areaData.getProvinceName().replace("市", "").replace("省", ""); + if (mapsData.get(rigino) == null) { + mapsData.put(rigino, areaData.getVal()); + kvData.put(rigino, areaData.getProvinceId()); + } else { + mapsData.put(rigino, mapsData.get(rigino) + areaData.getVal()); + } + } + for (AreaData areaData:provinceRiskList) { + String rigino = areaData.getProvinceName().replace("市", "").replace("省", ""); + if (mapsData.get(rigino) == null) { + mapsData.put(rigino, areaData.getVal()); + kvData.put(rigino, areaData.getProvinceId()); + } else { + mapsData.put(rigino, mapsData.get(rigino) + areaData.getVal()); + } + } + + List dataList = new ArrayList<>(); + Set set = mapsData.keySet(); + for (String key:set) { + Data data = new Data(); + data.setName(key); + data.setValue(mapsData.get(key)); + dataList.add(data); + } + + Normal normal = new Normal(true, null); + Label label = new Label(); + label.setNormal(normal); + label.setEmphasis(normal); + Option option = buildMapOption("孕妇建档数", null); + List seriesList = new ArrayList<>(); + Series series = new Series(); + series.setName("建档&高危数"); + series.setType("map"); + series.setMapType("china"); + series.setRoam(false); + series.setLabel(label); + series.setData(dataList); + seriesList.add(series); + option.setSeries(seriesList); + + // 高危数据 + List currentRiskList = statisticsService.queryRisks(new AreaDataQuery()); + Option groupRiskOption = buildBarOption("当前高危人数", null); + List groupRiskSeriesList = new ArrayList<>(); + Series groupRiskSeries = new Series(); + groupRiskSeries.setName("高危人数"); + groupRiskSeries.setType("bar"); + mapsData.clear(); + for (AreaData areaData:currentRiskList) { + String groupName = areaData.getGroupName().replace("预警", ""); + if (mapsData.get(groupName) == null) { + mapsData.put(groupName,areaData.getVal()); + } else { + mapsData.put(groupName,mapsData.get(groupName)+areaData.getVal()); + } + } + List groupRiskDataList = new ArrayList<>(); + for (Object key:groupRiskOption.getyAxis().getData()) { + if (mapsData.containsKey(key)) { + groupRiskDataList.add(mapsData.get(key)); + } + } + for (String key:mapsData.keySet()) { + if (!groupRiskOption.getyAxis().getData().contains(key)) { + groupRiskOption.getyAxis().getData().add(key); + groupRiskDataList.add(mapsData.get(key)); + } + } + groupRiskSeries.setData(groupRiskDataList); + groupRiskSeriesList.add(groupRiskSeries); + groupRiskOption.setSeries(groupRiskSeriesList); + + + + result.put("type", 1); + result.put("kvData", kvData); + result.put("mapsOption", option); + result.put("groupRiskOption", groupRiskOption); + ResultUtils.buildSuccessResultAndWrite(response, result); + } + + } + + + + + private Option buildMapOption(String titleText, String subTitle) { + Option option = new Option(); + Title title = new Title(); + title.setText(titleText); + title.setSubtext(subTitle); + option.setTitle(title); + Tooltip tooltip = new Tooltip(); + tooltip.setTrigger("item"); + tooltip.setShow(false); + option.setTooltip(tooltip); + Legend legend = new Legend(); + legend.setOrient("vertical"); + legend.setTop("20px"); + legend.setLeft("left"); + List tempList = new ArrayList(); + tempList.add("建档&高危数"); + legend.setData(tempList); + option.setLegend(legend); + option.setVisualMap(new VisualMap()); + Tooltip toolbox = new Tooltip(); + toolbox.setOrient("horizontal"); + toolbox.setShow(false); + toolbox.setTop("20px"); + toolbox.setLeft("right"); + return option; + } + + private Option buildBarOption(String titleText, String subTitle) { + 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(); + tempList.add("高危数"); + legend.setData(tempList); + option.setLegend(legend); + Grid grid = new Grid(); + grid.setContainLabel(true); + 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.setxAxis(xAxis); + AxisPointer yAxis = new AxisPointer(); + yAxis.setType("category"); + List dataList = new ArrayList(); + dataList.add("紫色"); + dataList.add("红色"); + dataList.add("橙色"); + dataList.add("黄色"); + yAxis.setBoundaryGap(dataList); + option.setyAxis(yAxis); + return option; + } + } diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/AxisPointer.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/AxisPointer.java new file mode 100644 index 0000000..56c42c6 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/AxisPointer.java @@ -0,0 +1,37 @@ +package com.lymsh.platform.reportdata.model.echarts; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class AxisPointer { + + private String type; + private List boundaryGap; + private List data; + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public List getBoundaryGap() { + return boundaryGap; + } + + public void setBoundaryGap(List boundaryGap) { + this.boundaryGap = boundaryGap; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Data.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Data.java new file mode 100644 index 0000000..dd01c5c --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Data.java @@ -0,0 +1,35 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Data { + + private String name; + private Object value; + private ItemStyle itemStyle; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public ItemStyle getItemStyle() { + return itemStyle; + } + + public void setItemStyle(ItemStyle itemStyle) { + this.itemStyle = itemStyle; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Grid.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Grid.java new file mode 100644 index 0000000..df92d23 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Grid.java @@ -0,0 +1,53 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Grid { + + private String top; + private String bottom; + private String left; + private String right; + private Boolean containLabel; + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getBottom() { + return bottom; + } + + public void setBottom(String bottom) { + this.bottom = bottom; + } + + public String getLeft() { + return left; + } + + public void setLeft(String left) { + this.left = left; + } + + public String getRight() { + return right; + } + + public void setRight(String right) { + this.right = right; + } + + public Boolean getContainLabel() { + return containLabel; + } + + public void setContainLabel(Boolean containLabel) { + this.containLabel = containLabel; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/ItemStyle.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/ItemStyle.java new file mode 100644 index 0000000..cecaf48 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/ItemStyle.java @@ -0,0 +1,31 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class ItemStyle { + + private Normal normal; + private Normal emphasis; + + public ItemStyle(Normal normal, Normal emphasis) { + this.normal = normal; + this.emphasis = emphasis; + } + + public Normal getNormal() { + return normal; + } + + public void setNormal(Normal normal) { + this.normal = normal; + } + + public Normal getEmphasis() { + return emphasis; + } + + public void setEmphasis(Normal emphasis) { + this.emphasis = emphasis; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Label.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Label.java new file mode 100644 index 0000000..6afc9e6 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Label.java @@ -0,0 +1,26 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Label { + + private Normal normal; + private Normal emphasis; + + public Normal getNormal() { + return normal; + } + + public void setNormal(Normal normal) { + this.normal = normal; + } + + public Normal getEmphasis() { + return emphasis; + } + + public void setEmphasis(Normal emphasis) { + this.emphasis = emphasis; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Legend.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Legend.java new file mode 100644 index 0000000..3945c4f --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Legend.java @@ -0,0 +1,64 @@ +package com.lymsh.platform.reportdata.model.echarts; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Legend { + + private List data; + private String orient; + private String top = "20px"; + private String bottom; + private String left = "left"; + private String right; + + public String getOrient() { + return orient; + } + + public void setOrient(String orient) { + this.orient = orient; + } + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getBottom() { + return bottom; + } + + public void setBottom(String bottom) { + this.bottom = bottom; + } + + public String getLeft() { + return left; + } + + public void setLeft(String left) { + this.left = left; + } + + public String getRight() { + return right; + } + + public void setRight(String right) { + this.right = right; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Normal.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Normal.java new file mode 100644 index 0000000..04c6731 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Normal.java @@ -0,0 +1,31 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Normal { + + private Boolean show; + private String color; + + public Normal(Boolean show, String color) { + this.show = show; + this.color = color; + } + + public Boolean getShow() { + return show; + } + + public void setShow(Boolean show) { + this.show = show; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Option.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Option.java new file mode 100644 index 0000000..d875c05 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Option.java @@ -0,0 +1,93 @@ +package com.lymsh.platform.reportdata.model.echarts; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Option { + + private Title title; + private Tooltip tooltip; + private Legend legend; + private VisualMap visualMap; + private Tooltip toolbox; + private List series; + + private Grid grid; + private AxisPointer xAxis; + + public AxisPointer getyAxis() { + return yAxis; + } + + public void setyAxis(AxisPointer yAxis) { + this.yAxis = yAxis; + } + + public AxisPointer getxAxis() { + return xAxis; + } + + public void setxAxis(AxisPointer xAxis) { + this.xAxis = xAxis; + } + + private AxisPointer yAxis; + + public Grid getGrid() { + return grid; + } + + public void setGrid(Grid grid) { + this.grid = grid; + } + + public Title getTitle() { + return title; + } + + public void setTitle(Title title) { + this.title = title; + } + + public Tooltip getTooltip() { + return tooltip; + } + + public void setTooltip(Tooltip tooltip) { + this.tooltip = tooltip; + } + + public Legend getLegend() { + return legend; + } + + public void setLegend(Legend legend) { + this.legend = legend; + } + + public VisualMap getVisualMap() { + return visualMap; + } + + public void setVisualMap(VisualMap visualMap) { + this.visualMap = visualMap; + } + + public Tooltip getToolbox() { + return toolbox; + } + + public void setToolbox(Tooltip toolbox) { + this.toolbox = toolbox; + } + + public List getSeries() { + return series; + } + + public void setSeries(List series) { + this.series = series; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Series.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Series.java new file mode 100644 index 0000000..237ec08 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Series.java @@ -0,0 +1,64 @@ +package com.lymsh.platform.reportdata.model.echarts; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Series { + + private String name; + private String type; + private String mapType; + private Boolean roam; + private Label label; + private List data; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getMapType() { + return mapType; + } + + public void setMapType(String mapType) { + this.mapType = mapType; + } + + public Boolean getRoam() { + return roam; + } + + public void setRoam(Boolean roam) { + this.roam = roam; + } + + public Label getLabel() { + return label; + } + + public void setLabel(Label label) { + this.label = label; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Title.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Title.java new file mode 100644 index 0000000..dbec803 --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Title.java @@ -0,0 +1,62 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Title { + + private String text; + private String subtext; + private String top = "20px"; + private String bottom; + private String left = "center"; + private String right; + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getBottom() { + return bottom; + } + + public void setBottom(String bottom) { + this.bottom = bottom; + } + + public String getLeft() { + return left; + } + + public void setLeft(String left) { + this.left = left; + } + + public String getRight() { + return right; + } + + public void setRight(String right) { + this.right = right; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getSubtext() { + return subtext; + } + + public void setSubtext(String subtext) { + this.subtext = subtext; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Tooltip.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Tooltip.java new file mode 100644 index 0000000..228452b --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/Tooltip.java @@ -0,0 +1,80 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class Tooltip { + + private String trigger; + private AxisPointer axisPointer; + private String top; + private String bottom; + private String left; + private String right; + private Boolean show; + private String orient; + + public String getOrient() { + return orient; + } + + public void setOrient(String orient) { + this.orient = orient; + } + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getBottom() { + return bottom; + } + + public void setBottom(String bottom) { + this.bottom = bottom; + } + + public String getLeft() { + return left; + } + + public void setLeft(String left) { + this.left = left; + } + + public String getRight() { + return right; + } + + public void setRight(String right) { + this.right = right; + } + + public Boolean getShow() { + return show; + } + + public void setShow(Boolean show) { + this.show = show; + } + + public String getTrigger() { + return trigger; + } + + public void setTrigger(String trigger) { + this.trigger = trigger; + } + + public AxisPointer getAxisPointer() { + return axisPointer; + } + + public void setAxisPointer(AxisPointer axisPointer) { + this.axisPointer = axisPointer; + } +} diff --git a/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/VisualMap.java b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/VisualMap.java new file mode 100644 index 0000000..cb74bba --- /dev/null +++ b/platform-reportData/src/main/java/com/lymsh/platform/reportdata/model/echarts/VisualMap.java @@ -0,0 +1,89 @@ +package com.lymsh.platform.reportdata.model.echarts; + +/** + * Created by Administrator on 2016/7/1 0001. + */ +public class VisualMap { + + private Integer min = 0; + private Integer max = 2500; + private String top = "bottom"; + private String bottom; + private String left = "left"; + private String right; + private String[] text = {"高","低"}; + private Boolean calculable = false; + private Boolean show = false; + + public Integer getMin() { + return min; + } + + public void setMin(Integer min) { + this.min = min; + } + + public Integer getMax() { + return max; + } + + public void setMax(Integer max) { + this.max = max; + } + + public String getTop() { + return top; + } + + public void setTop(String top) { + this.top = top; + } + + public String getBottom() { + return bottom; + } + + public void setBottom(String bottom) { + this.bottom = bottom; + } + + public String getLeft() { + return left; + } + + public void setLeft(String left) { + this.left = left; + } + + public String getRight() { + return right; + } + + public void setRight(String right) { + this.right = right; + } + + public String[] getText() { + return text; + } + + public void setText(String[] text) { + this.text = text; + } + + public Boolean getCalculable() { + return calculable; + } + + public void setCalculable(Boolean calculable) { + this.calculable = calculable; + } + + public Boolean getShow() { + return show; + } + + public void setShow(Boolean show) { + this.show = show; + } +}