diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java index f5baca6..70acdf4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java @@ -42,7 +42,7 @@ public class ReportController extends BaseController { @ResponseBody @TokenRequired @RequestMapping(value = "/patients", method = RequestMethod.GET) - public BaseObjectResponse patients(String provinceId, String cityId, String areaId, String streetId, @RequestParam Integer statistType, Integer statistVal, + public BaseObjectResponse patients(@RequestParam String provinceId, String cityId, String areaId, String streetId, @RequestParam Integer statistType, Integer statistVal, Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request) { return reportService.patients(provinceId, cityId, areaId, streetId, statistType, statistVal, ageType, patientType, startDate, endDate, getUserId(request)); } 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 76bd8c0..82347b6 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 @@ -203,6 +203,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService List line = new ArrayList<>(); Map barMap = new HashMap<>(); Map lineMap = new HashMap<>(); + List> range = DateUtil.getRange(startDate, endDate); if(StringUtils.isNotEmpty(aredId)) { // 按照医院统计 List patientIds = new ArrayList<>(); @@ -217,6 +218,47 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id"))); bar.add((Integer) mappedResult.get("count")); } + + // 拼装tab数据 + titleList.add("医院名称"); + titleList.add("统计指标(人)"); + for (Map map : range) { + titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); + } + Map> tempMap = new HashMap<>(); + for (Patients patient : patients) { + if(tempMap.containsKey(patient.getHospitalId())) { + Map map = tempMap.get(patient.getHospitalId()); + for (Map dateMap : range) { + String cname = DateUtil.getyyyy_mm(dateMap.get("cname")); + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { + map.put(cname, map.containsKey(cname) ? map.get(cname) + 1 : 1); + break; + } + } + } else { + Map temp = new HashMap<>(); + for (Map dateMap : range) { + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { + temp.put(DateUtil.getyyyy_mm(dateMap.get("cname")), 1); + break; + } + } + tempMap.put(patient.getHospitalId(), temp); + } + } + for (Map.Entry> entry : tempMap.entrySet()) { + List tempList = new ArrayList<>(); + tempList.add(couponMapper.findHospitalNameById(entry.getKey())); + tempList.add("建档人数"); + for (Map map : range) { + tempList.add(entry.getValue().containsKey(DateUtil.getyyyy_mm(map.get("cname"))) ? + entry.getValue().get(DateUtil.getyyyy_mm(map.get("cname"))) + "" : "0"); + } + tabList.add(tempList); + } } else { Map areaCountMap = new HashMap<>(); String groupKey = StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"; // 按照区县或者市统计 @@ -242,14 +284,12 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } // 拼装tab数据 - List> range = DateUtil.getRange(startDate, endDate); titleList.add((StringUtils.isNotEmpty(cityId) ? "区县" : "城市") + "名称"); titleList.add("机构数"); titleList.add("统计指标(人)"); for (Map map : range) { titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); } - tabList.add(titleList); List> infos = new ArrayList<>(); for (Patients patient : patients) { @@ -257,7 +297,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService if(patient.getHospitalId().equals(map.get("id").toString())) { boolean flag = true; for (Map info : infos) { - if(map.get("cityId").equals(info.get("id"))) { + if(map.get((StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId")).equals(info.get("id"))) { Set hids = (Set) info.get("hids"); hids.add(patient.getHospitalId()); for (Map dateMap : range) { @@ -284,7 +324,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService Set hids = new HashSet<>(); hids.add(patient.getHospitalId()); info.put(monthKey, 1); -// info.put("id", map.get("cityId")); info.put("id", map.get((StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"))); info.put("hids", hids); infos.add(info); @@ -308,14 +347,9 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } System.out.println(tabList); } -// -// if(StringUtils.isNotEmpty(cityId)) { // 按照区县来 对应孕妇建档统计-市 -// -// } else { // 按照城市来 对应孕妇建档统计-省 -// -// } - setTabListInfo(tabList); + tabList.add(0, titleList); + setTabListInfo(tabList, StringUtils.isNotEmpty(aredId) ? 2 : 3); barMap.put("data", bar); barMap.put("type", "bar"); @@ -347,7 +381,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return RespBuilder.buildSuccess(restMap); } - private void setTabListInfo(List> tabList) { + private void setTabListInfo(List> tabList, int index) { if(CollectionUtils.isNotEmpty(tabList)) { for (int i = 0; i < tabList.size(); i++) { List list = tabList.get(i); @@ -357,7 +391,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService list.add("合计"); } else { int count = 0; - for (int j = 3; j < list.size(); j++) { + for (int j = index; j < list.size(); j++) { count += Integer.parseInt(list.get(j)); } list.add(0, ++seq + ""); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java index 95a28a6..fdc6ce2 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java @@ -77,6 +77,24 @@ public class MathUtil { return "0.00%"; } + public static String getProportion(Integer num, Integer count) { + if(num != null && StringUtils.isNumeric(num.toString()) && count != null && count != 0) { + Double division = Double.parseDouble(division(Integer.parseInt(num.toString()), count)) * 100; + String s = doubleFormat(division); + s = removeZero(s); + return s; + } + return "0"; + } + + public static String removeZero(String s) { + if(StringUtils.isNotEmpty(s) && ((s.endsWith("0") && s.contains(".")) || s.endsWith("."))) { + s = s.substring(0, s.length() - 1); + return removeZero(s); + } + return s; + } + public static String getProportion(Object obj, Object count) { if(StringUtils.isNotBlank("count") && StringUtils.isNumeric(count.toString())) return getProportion(obj, Integer.parseInt(count.toString())); @@ -94,5 +112,9 @@ public class MathUtil { return new BigDecimal(a / b).setScale(digit, BigDecimal.ROUND_HALF_UP).doubleValue(); } + public static void main(String[] args) { + System.out.println(getProportion(30, 100)); + } + }