Commit 978670a523724936df37e7b164ce4f2f03a3dfe8

Authored by litao
1 parent 03a1edd733

报表数据返回结构修改

Showing 1 changed file with 56 additions and 48 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java View file @ 978670a
... ... @@ -29,68 +29,69 @@
29 29 List<Object> params = new ArrayList<>();
30 30 List<Map<String, Object>> mapList = reportDao.findList(getAreaCountFacadeSql(startDate, endDate, startWeek, endWeek, childBirth, params), params);
31 31  
32   - List<Map<String, Object>> calcData = calcData(mapList);/** 计算报表数据 */
33   -
34   - restMap.put("reportData", calcData); /** 报表数据*/
  32 + List<Object> peopleList = createPeoples(mapList);
  33 + restMap.put("grid", createGrid( createPeoples(mapList), createProportion(peopleList)));
35 34 restMap.put("xAxis", Arrays.asList("1次", "2次", "3次", "4次", "5次", "6次", "7次", "8次", "9次", "10次", "11次", "12次", "≥13次")); /** x轴数据 */
36   - restMap.put("yAxis", createYData(calcData));
  35 + restMap.put("yAxis", createYData(peopleList));
37 36  
38   - if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
39   - restMap.put("recordDate", startDate.replace("-", "/") + " - " + endDate.replace("-", "/"));
40   - }
41   -
42 37 rest.setData(restMap);
43 38 return rest;
44 39 }
45 40  
46   - private List<Object> createYData(List<Map<String, Object>> calcData) {
47   - List<Object> yData = new ArrayList<>();
48   - for (Map<String, Object> map : calcData) {
49   - yData.add(map.get("people"));
  41 + private Map<String, Object> createGrid(List<Object> peopleList, List<Object> proportionList) {
  42 + Map<String, Object> map = new HashMap<>();
  43 + map.put("peoples", peopleList);
  44 + map.put("proportion", proportionList);
  45 + map.put("header", Arrays.asList("产检次数", "总计", "1次", "2次", "3次", "4次", "5次", "6次", "7次", "8次", "9次", "10次", "11次", "12次", "≥13次"));
  46 + return map;
  47 + }
  48 +
  49 + private List<Object> createProportion(List<Object> peopleList) {
  50 + List<Object> proportions = new ArrayList<>();
  51 + proportions.add("占比");
  52 + int countPeople = Integer.parseInt(peopleList.get(1).toString());
  53 + proportions.add("100%");
  54 + for (int i = 1; i < peopleList.size(); i++) {
  55 + proportions.add(MathUtil.doubleFormat(Double.parseDouble(MathUtil.division(Integer.valueOf(peopleList.get(i).toString()) * 100, countPeople))) + "%");
50 56 }
51   - return yData;
  57 + return proportions;
52 58 }
53 59  
54   - private List<Map<String, Object>> calcData(List<Map<String, Object>> mapList) {
55   - List<Map<String, Object>> restMap = new ArrayList<>();
  60 + private List<Object> createPeoples(List<Map<String, Object>> mapList) {
  61 + List<Object> peoples = new ArrayList<>();
  62 + peoples.add("产检人数");
56 63 int countPeople = 0; /** 体检所有人数 */
57   - int otherPeople = 0; /** 存储 >= 13次的 所有人数 */
58   - double residualRatio = 1; /** 所剩比率 */
59   - for (Map<String, Object> map : mapList) {
60   - countPeople += Integer.parseInt(map.get("EXAMINE_CNT").toString());
61   - }
62 64  
63   - for (Map<String, Object> map : mapList) {
64   - String number = map.get("EXAMINE_HISTORY_NUM").toString(); /** 次数 */
65   - String people = map.get("EXAMINE_CNT").toString(); /** 人数 */
66   - if(StringUtils.isNotBlank(number) && StringUtils.isNotBlank(people)) {
67   - Integer count = Integer.valueOf(number);
68   - if(count >= 13) {
69   - otherPeople += Integer.valueOf(people);
70   - } else {
71   - String proportion = MathUtil.division(Integer.valueOf(people), countPeople);
72   - residualRatio -= Double.valueOf(proportion);
73   - Map<String, Object> m = new HashMap<>();
74   - m.put("number", number);
75   - m.put("people", people);
76   - m.put("proportion", MathUtil.doubleFormat(Double.valueOf(proportion) * 100) + "%");
77   - restMap.add(m);
78   - }
  65 + /** 通过下标循环取map里面数据 有就设置value 没有就设置0 */
  66 + for(int i = 1; i <= 30; i++) {
  67 + String count = null;
  68 + for (Map<String, Object> map : mapList) {
  69 + if(map.get("EXAMINE_HISTORY_NUM").toString().equals("" + i)) {
  70 + count = map.get("EXAMINE_CNT").toString();
  71 + countPeople += Integer.valueOf(count);
  72 + }
79 73 }
  74 + if(i <= 13) {
  75 + if(StringUtils.isNotBlank(count)) {
  76 + peoples.add(count);
  77 + } else {
  78 + peoples.add("0");
  79 + }
  80 + } else {
  81 + if(StringUtils.isNotBlank(count)) {
  82 + peoples.set(12, Integer.valueOf(peoples.get(12).toString()) + Integer.valueOf(count) + "");
  83 + }
  84 + }
80 85 }
  86 + peoples.add(1, countPeople + "");
  87 + return peoples;
  88 + }
81 89  
82   - /** 处理13次以上的 */
83   - Map<String, Object> m = new HashMap<>();
84   - m.put("number", 13);
85   - m.put("people", otherPeople);
86   - m.put("proportion", MathUtil.doubleFormat(Double.valueOf(residualRatio) * 100) + "%");
87   - restMap.add(m);
88   -
89   - /** 处理总数 */
90   - m.put("people", countPeople);
91   - m.put("proportion", "100%");
92   - restMap.add(m);
93   - return restMap;
  90 + private List<Object> createYData(List<Object> list) {
  91 + List<Object> newList = new ArrayList<>();
  92 + newList.addAll(list);
  93 + newList.remove(0);
  94 + return newList;
94 95 }
95 96  
96 97 private String getAreaCountFacadeSql(String startDate, String endDate, Integer startWeek, Integer endWeek, Integer childBirth, List<Object> params) {
... ... @@ -127,5 +128,12 @@
127 128 return sql.toString();
128 129 }
129 130  
  131 + public static void main(String[] args) {
  132 + System.out.println("1".equals("" + 1));
  133 + System.out.println(StringUtils.isNotBlank(""));
  134 +
  135 +
  136 +
  137 + }
130 138 }