Commit c723f24f8159f0404a99d256f153d3a3f0cea275

Authored by litao@lymsh.com
1 parent d3ca566eaf

写bug

Showing 4 changed files with 51 additions and 23 deletions

platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java View file @ c723f24
... ... @@ -128,5 +128,7 @@
128 128 void invalid2(Map<String, Object> param);
129 129  
130 130 List<String> findUsededId(List<String> usedIds);
  131 +
  132 + List<Map<String, Object>> findAllHospitals();
131 133 }
platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml View file @ c723f24
... ... @@ -777,5 +777,10 @@
777 777 </foreach>
778 778 </select>
779 779  
  780 + <select id="findAllHospitals" resultType="map">
  781 + select id, name, province_id as provinceId, city_id as cityId, area_id as areaId, street_id as streetId
  782 + from organization
  783 + where yn = 1
  784 + </select>
780 785 </mapper>
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java View file @ c723f24
... ... @@ -41,9 +41,9 @@
41 41 @ResponseBody
42 42 @TokenRequired
43 43 @RequestMapping(value = "/patients", method = RequestMethod.GET)
44   - public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId,
  44 + public BaseObjectResponse patients(String provinceId, String cityId, String areaId, String streetId,
45 45 @RequestParam Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request) {
46   - return reportService.patients(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request));
  46 + return reportService.patients(provinceId, cityId, areaId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request));
47 47 }
48 48  
49 49 /**
50 50  
... ... @@ -56,9 +56,9 @@
56 56 @ResponseBody
57 57 @TokenRequired
58 58 @RequestMapping(value = "/patients/export", method = RequestMethod.GET)
59   - public void patientsExport(String provinceId, String cityId, String aredId, String streetId, @RequestParam Integer statistType,
  59 + public void patientsExport(String provinceId, String cityId, String areaId, String streetId, @RequestParam Integer statistType,
60 60 Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request, HttpServletResponse response) {
61   - reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response);
  61 + reportService.patientsExport(provinceId, cityId, areaId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response);
62 62 // reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, 1000000185, response);
63 63 }
64 64  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java View file @ c723f24
... ... @@ -197,27 +197,48 @@
197 197 List<String> xDatas = new ArrayList<>();
198 198 List<Map<String, Object>> series = new ArrayList<>();
199 199 List<String> legend = Arrays.asList("建档总数");
200   -
201   - List<String> patientIds = new ArrayList<>();
202   - for (Patients patient : patients) {
203   - patientIds.add(patient.getId());
204   - }
205   -
206   - GroupOperation groupOperation = Aggregation.group("hospitalId").count().as("count");
207   - Aggregation agg = Aggregation.newAggregation(Patients.class, Aggregation.match(Criteria.where("id").in(patientIds)), groupOperation);
208   - AggregationResults<Map> results = mongoTemplate.aggregate(agg, Patients.class, Map.class);
209   - List<Map> mappedResults = results.getMappedResults();
210   -
211 200 List<Object> bar = new ArrayList<>();
212   - List<Object> port = new ArrayList<>();
213 201 Map<String, Object> barMap = new HashMap<>();
214   - barMap.put("data", new ArrayList<>());
215   - Map<String, Object> portMap = new HashMap<>();
216   - portMap.put("data", new ArrayList<>());
217   - for (Map mappedResult : mappedResults) {
218   - xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id")));
219   - bar.add(mappedResult.get("count"));
  202 +
  203 + if(StringUtils.isNotEmpty(aredId)) { // 按照医院统计
  204 + List<String> patientIds = new ArrayList<>();
  205 + for (Patients patient : patients) {
  206 + patientIds.add(patient.getId());
  207 + }
  208 + GroupOperation groupOperation = Aggregation.group("hospitalId").count().as("count");
  209 + Aggregation agg = Aggregation.newAggregation(Patients.class, Aggregation.match(Criteria.where("id").in(patientIds)), groupOperation);
  210 + AggregationResults<Map> results = mongoTemplate.aggregate(agg, Patients.class, Map.class);
  211 + List<Map> mappedResults = results.getMappedResults();
  212 + for (Map mappedResult : mappedResults) {
  213 + xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id")));
  214 + bar.add(mappedResult.get("count"));
  215 + }
  216 + } else {
  217 + Map<Integer, Integer> areaCountMap = new HashMap<>();
  218 + List<Map<String, Object>> hospitals = couponMapper.findAllHospitals();
  219 + String groupKey = StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"; // 按照区县或者市统计
  220 + for (Patients patient : patients) {
  221 + String hospitalId = patient.getHospitalId();
  222 + if(StringUtils.isEmpty(hospitalId)) {
  223 + continue;
  224 + }
  225 + for (Map<String, Object> map : hospitals) {
  226 + if(hospitalId.equals(map.get("id").toString())) {
  227 + Integer areaId = Integer.parseInt(map.get(groupKey).toString());
  228 + if(areaCountMap.containsKey(areaId)) {
  229 + areaCountMap.put(areaId, areaCountMap.get(areaId) + 1);
  230 + } else {
  231 + areaCountMap.put(areaId, 1);
  232 + }
  233 + }
  234 + }
  235 + }
  236 + for (Map.Entry<Integer, Integer> entry : areaCountMap.entrySet()) {
  237 + xDatas.add(mongoUtil.findName(entry.getKey() + ""));
  238 + bar.add(entry.getValue());
  239 + }
220 240 }
  241 +
221 242 barMap.put("data", bar);
222 243 barMap.put("type", "bar");
223 244 barMap.put("name", "建档总数");
... ... @@ -226,6 +247,7 @@
226 247 restMap.put("legend", legend);
227 248 restMap.put("series", series);
228 249 restMap.put("xDatas", xDatas);
  250 +
229 251 return RespBuilder.buildSuccess(restMap);
230 252 }
231 253  
... ... @@ -1243,7 +1265,6 @@
1243 1265 } else {
1244 1266 temp.put("week", DateUtil.getWeekDesc(pt.getLastMenses(), new Date()));
1245 1267 }
1246   - System.out.println(pt.getBookbuildingDate().toLocaleString());
1247 1268 temp.put("buildWeek", DateUtil.getWeekDesc(pt.getLastMenses(), pt.getBookbuildingDate())); /** 建档孕周 */
1248 1269 temp.put("buildDate", DateUtil.getyyyy_MM_dd(pt.getBookbuildingDate())); /** 建档日期 */
1249 1270 temp.put("doctorName", couponMapper.getUserName(pt.getBookbuildingDoctor()));