From 480a40ff307f8b84adacd2f0c1af673b018e77e6 Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Thu, 23 Nov 2017 21:06:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=99bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/controller/ReportController.java | 9 +- .../operate/web/service/IReportService.java | 2 +- .../web/service/impl/ReportServiceImpl.java | 113 ++++++++++++++++++++- 3 files changed, 114 insertions(+), 10 deletions(-) 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 431b035..f908240 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 @@ -33,7 +33,8 @@ public class ReportController extends BaseController { /** * 建档统计 - * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 + * @param statistType 1=占比 2=环比 + * @param statistVal 1=占比 2=环比 * @param ageType 1=全部年龄 2=20岁以下 3=20-30岁 4=30-40岁 5=40岁以上 * @param patientType 建档孕周 1=孕早期 2=孕中期 3=孕晚期 * @return @@ -41,9 +42,9 @@ 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 ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request) { - return reportService.patients(provinceId, cityId, areaId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request)); + public BaseObjectResponse patients(String provinceId, String cityId, String areaId, String streetId, 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/IReportService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java index bea05cd..b84fba5 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java @@ -98,7 +98,7 @@ public interface IReportService extends IBaseService { BaseObjectResponse unUsedPeopleInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId); - BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId); + BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer statistVal, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId); void patientsExport(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId, HttpServletResponse response); } 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 9327e62..f0ed9e0 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 @@ -190,11 +190,12 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService * @return */ @Override - public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, - Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { + public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer statistVal, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { List patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); + List> hospitals = couponMapper.findAllHospitals(); Map restMap = new HashMap<>(); - List> tabList = new ArrayList<>(); + List> tabList = new ArrayList<>(); + List titleList = new ArrayList<>(); List xDatas = new ArrayList<>(); List> series = new ArrayList<>(); List legend = Arrays.asList("建档总数"); @@ -218,7 +219,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } } else { Map areaCountMap = new HashMap<>(); - List> hospitals = couponMapper.findAllHospitals(); String groupKey = StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"; // 按照区县或者市统计 for (Patients patient : patients) { String hospitalId = patient.getHospitalId(); @@ -240,7 +240,83 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService xDatas.add(mongoUtil.findName(entry.getKey() + "")); bar.add(entry.getValue()); } - } + + // 拼装tab数据 + List> range = DateUtil.getRange(startDate, endDate); + if(StringUtils.isNotEmpty(cityId)) { // 按照区县来 + titleList.add(""); + titleList.add(""); + titleList.add(""); + for (Map map : range) { + titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); + } + } else { // 按照城市来 + titleList.add("城市名称"); + 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) { + for (Map map : hospitals) { + if(patient.getHospitalId().equals(map.get("id").toString())) { + boolean flag = true; + for (Map info : infos) { + if(map.get("cityId").equals(info.get("id"))) { + Set hids = (Set) info.get("hids"); + hids.add(patient.getHospitalId()); + for (Map dateMap : range) { + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { + String monthKey = DateUtil.getyyyy_mm(dateMap.get("cname")); + if(info.containsKey(monthKey)) { + info.put(monthKey, (Integer) info.get(monthKey) + 1); + flag = false; + } else { + info.put(monthKey, 1); + flag = false; + } + } + } + } + } + if(flag) { + for (Map dateMap : range) { + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { + String monthKey = DateUtil.getyyyy_mm(dateMap.get("cname")); + Map info = new HashMap<>(); + Set hids = new HashSet<>(); + hids.add(patient.getHospitalId()); + info.put(monthKey, 1); + info.put("id", map.get("cityId")); + info.put("hids", hids); + infos.add(info); + } + } + } + } + } + } + + for (Map info : infos) { + List tempList = new ArrayList<>(); + tempList.add(findName(info.get("id"))); + tempList.add(((Set) info.get("hids")).size() + ""); + tempList.add("建档总数"); + for (Map map : range) { + tempList.add(info.containsKey(DateUtil.getyyyy_mm(map.get("cname"))) ? + info.get(DateUtil.getyyyy_mm(map.get("cname"))) + "" : "0"); + } + tabList.add(tempList); + } + System.out.println(tabList); + } + } + + setTabListInfo(tabList); barMap.put("data", bar); barMap.put("type", "bar"); @@ -268,6 +344,32 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return RespBuilder.buildSuccess(restMap); } + private void setTabListInfo(List> tabList) { + if(CollectionUtils.isNotEmpty(tabList)) { + for (int i = 0; i < tabList.size(); i++) { + List list = tabList.get(i); + int seq = 0; + if(i == 0) { + list.add(0, "序号" ); + list.add("合计"); + } else { + int count = 0; + for (int j = 3; j < list.size(); j++) { + count += Integer.parseInt(list.get(j)); + } + list.add(0, ++seq + ""); + list.add(count + ""); + } + } + } + } + + private Integer getPatientsCount(List patients, Date start, Date end) { + Integer count = 0; + if(CollectionUtils.isNotEmpty(patients) && start != null && end != null) {} + return count; + } + @Override public void patientsExport(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId, HttpServletResponse response) { List patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); @@ -362,6 +464,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return patients; } + // 建档孕周 1=孕早期 2=孕中期 3=孕晚期 private void doFilter(List patients, Integer ageType, Integer patientType) { if(patientType != null) { Iterator iterator = patients.iterator(); -- 1.8.3.1