From 978670a523724936df37e7b164ce4f2f03a3dfe8 Mon Sep 17 00:00:00 2001 From: litao Date: Thu, 20 Apr 2017 17:48:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=95=B0=E6=8D=AE=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=BB=93=E6=9E=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/impl/ReportServiceImpl.java | 104 +++++++++++---------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index 876d0e5..22da762 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -29,68 +29,69 @@ public class ReportServiceImpl implements IReportService { List params = new ArrayList<>(); List> mapList = reportDao.findList(getAreaCountFacadeSql(startDate, endDate, startWeek, endWeek, childBirth, params), params); - List> calcData = calcData(mapList);/** 计算报表数据 */ - - restMap.put("reportData", calcData); /** 报表数据*/ + List peopleList = createPeoples(mapList); + restMap.put("grid", createGrid( createPeoples(mapList), createProportion(peopleList))); restMap.put("xAxis", Arrays.asList("1次", "2次", "3次", "4次", "5次", "6次", "7次", "8次", "9次", "10次", "11次", "12次", "≥13次")); /** x轴数据 */ - restMap.put("yAxis", createYData(calcData)); - - if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) { - restMap.put("recordDate", startDate.replace("-", "/") + " - " + endDate.replace("-", "/")); - } + restMap.put("yAxis", createYData(peopleList)); rest.setData(restMap); return rest; } - private List createYData(List> calcData) { - List yData = new ArrayList<>(); - for (Map map : calcData) { - yData.add(map.get("people")); + private Map createGrid(List peopleList, List proportionList) { + Map map = new HashMap<>(); + map.put("peoples", peopleList); + map.put("proportion", proportionList); + map.put("header", Arrays.asList("产检次数", "总计", "1次", "2次", "3次", "4次", "5次", "6次", "7次", "8次", "9次", "10次", "11次", "12次", "≥13次")); + return map; + } + + private List createProportion(List peopleList) { + List proportions = new ArrayList<>(); + proportions.add("占比"); + int countPeople = Integer.parseInt(peopleList.get(1).toString()); + proportions.add("100%"); + for (int i = 1; i < peopleList.size(); i++) { + proportions.add(MathUtil.doubleFormat(Double.parseDouble(MathUtil.division(Integer.valueOf(peopleList.get(i).toString()) * 100, countPeople))) + "%"); } - return yData; + return proportions; } - private List> calcData(List> mapList) { - List> restMap = new ArrayList<>(); + private List createPeoples(List> mapList) { + List peoples = new ArrayList<>(); + peoples.add("产检人数"); int countPeople = 0; /** 体检所有人数 */ - int otherPeople = 0; /** 存储 >= 13次的 所有人数 */ - double residualRatio = 1; /** 所剩比率 */ - for (Map map : mapList) { - countPeople += Integer.parseInt(map.get("EXAMINE_CNT").toString()); - } - for (Map map : mapList) { - String number = map.get("EXAMINE_HISTORY_NUM").toString(); /** 次数 */ - String people = map.get("EXAMINE_CNT").toString(); /** 人数 */ - if(StringUtils.isNotBlank(number) && StringUtils.isNotBlank(people)) { - Integer count = Integer.valueOf(number); - if(count >= 13) { - otherPeople += Integer.valueOf(people); - } else { - String proportion = MathUtil.division(Integer.valueOf(people), countPeople); - residualRatio -= Double.valueOf(proportion); - Map m = new HashMap<>(); - m.put("number", number); - m.put("people", people); - m.put("proportion", MathUtil.doubleFormat(Double.valueOf(proportion) * 100) + "%"); - restMap.add(m); - } + /** 通过下标循环取map里面数据 有就设置value 没有就设置0 */ + for(int i = 1; i <= 30; i++) { + String count = null; + for (Map map : mapList) { + if(map.get("EXAMINE_HISTORY_NUM").toString().equals("" + i)) { + count = map.get("EXAMINE_CNT").toString(); + countPeople += Integer.valueOf(count); + } + } + if(i <= 13) { + if(StringUtils.isNotBlank(count)) { + peoples.add(count); + } else { + peoples.add("0"); + } + } else { + if(StringUtils.isNotBlank(count)) { + peoples.set(12, Integer.valueOf(peoples.get(12).toString()) + Integer.valueOf(count) + ""); + } } } + peoples.add(1, countPeople + ""); + return peoples; + } - /** 处理13次以上的 */ - Map m = new HashMap<>(); - m.put("number", 13); - m.put("people", otherPeople); - m.put("proportion", MathUtil.doubleFormat(Double.valueOf(residualRatio) * 100) + "%"); - restMap.add(m); - - /** 处理总数 */ - m.put("people", countPeople); - m.put("proportion", "100%"); - restMap.add(m); - return restMap; + private List createYData(List list) { + List newList = new ArrayList<>(); + newList.addAll(list); + newList.remove(0); + return newList; } private String getAreaCountFacadeSql(String startDate, String endDate, Integer startWeek, Integer endWeek, Integer childBirth, List params) { @@ -127,4 +128,11 @@ public class ReportServiceImpl implements IReportService { return sql.toString(); } + public static void main(String[] args) { + System.out.println("1".equals("" + 1)); + System.out.println(StringUtils.isNotBlank("")); + + + + } } -- 1.8.3.1