From c723f24f8159f0404a99d256f153d3a3f0cea275 Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Wed, 22 Nov 2017 18:03:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=99bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permission/dao/master/CouponMapper.java | 2 + .../main/resources/mainOrm/master/CouponMapper.xml | 5 ++ .../operate/web/controller/ReportController.java | 8 +-- .../web/service/impl/ReportServiceImpl.java | 59 +++++++++++++++------- 4 files changed, 51 insertions(+), 23 deletions(-) diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java index 4e6f457..891b93b 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java @@ -128,4 +128,6 @@ public interface CouponMapper { void invalid2(Map param); List findUsededId(List usedIds); + + List> findAllHospitals(); } diff --git a/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml b/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml index c6e0d87..78d59a7 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml @@ -777,4 +777,9 @@ + \ No newline at end of file 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 aa3b637..431b035 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 @@ -41,9 +41,9 @@ public class ReportController extends BaseController { @ResponseBody @TokenRequired @RequestMapping(value = "/patients", method = RequestMethod.GET) - public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, + 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, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request)); + return reportService.patients(provinceId, cityId, areaId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request)); } /** @@ -56,9 +56,9 @@ public class ReportController extends BaseController { @ResponseBody @TokenRequired @RequestMapping(value = "/patients/export", method = RequestMethod.GET) - public void patientsExport(String provinceId, String cityId, String aredId, String streetId, @RequestParam Integer statistType, + public void patientsExport(String provinceId, String cityId, String areaId, String streetId, @RequestParam Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request, HttpServletResponse response) { - reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response); + reportService.patientsExport(provinceId, cityId, areaId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response); // reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, 1000000185, 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 1844dc6..02def01 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 @@ -197,27 +197,48 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService List xDatas = new ArrayList<>(); List> series = new ArrayList<>(); List legend = Arrays.asList("建档总数"); - - List patientIds = new ArrayList<>(); - for (Patients patient : patients) { - patientIds.add(patient.getId()); - } - - GroupOperation groupOperation = Aggregation.group("hospitalId").count().as("count"); - Aggregation agg = Aggregation.newAggregation(Patients.class, Aggregation.match(Criteria.where("id").in(patientIds)), groupOperation); - AggregationResults results = mongoTemplate.aggregate(agg, Patients.class, Map.class); - List mappedResults = results.getMappedResults(); - List bar = new ArrayList<>(); - List port = new ArrayList<>(); Map barMap = new HashMap<>(); - barMap.put("data", new ArrayList<>()); - Map portMap = new HashMap<>(); - portMap.put("data", new ArrayList<>()); - for (Map mappedResult : mappedResults) { - xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id"))); - bar.add(mappedResult.get("count")); + + if(StringUtils.isNotEmpty(aredId)) { // 按照医院统计 + List patientIds = new ArrayList<>(); + for (Patients patient : patients) { + patientIds.add(patient.getId()); + } + GroupOperation groupOperation = Aggregation.group("hospitalId").count().as("count"); + Aggregation agg = Aggregation.newAggregation(Patients.class, Aggregation.match(Criteria.where("id").in(patientIds)), groupOperation); + AggregationResults results = mongoTemplate.aggregate(agg, Patients.class, Map.class); + List mappedResults = results.getMappedResults(); + for (Map mappedResult : mappedResults) { + xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id"))); + bar.add(mappedResult.get("count")); + } + } else { + Map areaCountMap = new HashMap<>(); + List> hospitals = couponMapper.findAllHospitals(); + String groupKey = StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"; // 按照区县或者市统计 + for (Patients patient : patients) { + String hospitalId = patient.getHospitalId(); + if(StringUtils.isEmpty(hospitalId)) { + continue; + } + for (Map map : hospitals) { + if(hospitalId.equals(map.get("id").toString())) { + Integer areaId = Integer.parseInt(map.get(groupKey).toString()); + if(areaCountMap.containsKey(areaId)) { + areaCountMap.put(areaId, areaCountMap.get(areaId) + 1); + } else { + areaCountMap.put(areaId, 1); + } + } + } + } + for (Map.Entry entry : areaCountMap.entrySet()) { + xDatas.add(mongoUtil.findName(entry.getKey() + "")); + bar.add(entry.getValue()); + } } + barMap.put("data", bar); barMap.put("type", "bar"); barMap.put("name", "建档总数"); @@ -226,6 +247,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService restMap.put("legend", legend); restMap.put("series", series); restMap.put("xDatas", xDatas); + return RespBuilder.buildSuccess(restMap); } @@ -1243,7 +1265,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } else { temp.put("week", DateUtil.getWeekDesc(pt.getLastMenses(), new Date())); } - System.out.println(pt.getBookbuildingDate().toLocaleString()); temp.put("buildWeek", DateUtil.getWeekDesc(pt.getLastMenses(), pt.getBookbuildingDate())); /** 建档孕周 */ temp.put("buildDate", DateUtil.getyyyy_MM_dd(pt.getBookbuildingDate())); /** 建档日期 */ temp.put("doctorName", couponMapper.getUserName(pt.getBookbuildingDoctor())); -- 1.8.3.1