Commit 52469eb6fdbf39787d734c8f05d330e0974bafd1
Exists in
master
and in
6 other branches
Merge remote-tracking branch 'origin/master'
Showing 4 changed files
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java
View file @
52469eb
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | @ResponseBody |
43 | 43 | @TokenRequired |
44 | 44 | @RequestMapping(value = "/patients", method = RequestMethod.GET) |
45 | - public BaseObjectResponse patients(String provinceId, String cityId, String areaId, String streetId, Integer statistType, Integer statistVal, | |
45 | + public BaseObjectResponse patients(@RequestParam String provinceId, String cityId, String areaId, String streetId, @RequestParam Integer statistType, Integer statistVal, | |
46 | 46 | Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request) { |
47 | 47 | return reportService.patients(provinceId, cityId, areaId, streetId, statistType, statistVal, ageType, patientType, startDate, endDate, getUserId(request)); |
48 | 48 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java
View file @
52469eb
... | ... | @@ -1488,7 +1488,7 @@ |
1488 | 1488 | if (antExcAddOther.getFitness() != null) { |
1489 | 1489 | String fitness = FitnessEnums.getTitle(Integer.parseInt(antExcAddOther.getFitness().toString())); |
1490 | 1490 | if (antExcAddOther.getFitnessRemark() != null) { |
1491 | - mapData.put("fitness", fitness + "(," + antExcAddOther.getFitnessRemark() + ")"); | |
1491 | + mapData.put("fitness", fitness + "(" + antExcAddOther.getFitnessRemark() + ")"); | |
1492 | 1492 | } else { |
1493 | 1493 | mapData.put("fitness", fitness); |
1494 | 1494 | } |
... | ... | @@ -1515,7 +1515,7 @@ |
1515 | 1515 | if (otherMap.containsKey("fmType")) { |
1516 | 1516 | String fmType = CZFmTypeEnums.getTitle(Integer.parseInt(otherMap.get("fmType").toString())); |
1517 | 1517 | if (otherMap.get("fmTypeRemark") != null) { |
1518 | - mapData.put("fmType", fmType + "," + otherMap.get("fmTypeRemark")); | |
1518 | + mapData.put("fmType", fmType + "(" + otherMap.get("fmTypeRemark") + ")"); | |
1519 | 1519 | } else { |
1520 | 1520 | mapData.put("fmType", fmType); |
1521 | 1521 | } |
... | ... | @@ -1525,7 +1525,7 @@ |
1525 | 1525 | if (otherMap.containsKey("fitness")) { |
1526 | 1526 | String fitness = FitnessEnums.getTitle(Integer.parseInt(otherMap.get("fitness").toString())); |
1527 | 1527 | if (otherMap.get("fitnessRemark") != null) { |
1528 | - mapData.put("fitness", fitness + "," + otherMap.get("fitnessRemark")); | |
1528 | + mapData.put("fitness", fitness + "(" + otherMap.get("fitnessRemark") + ")"); | |
1529 | 1529 | } else { |
1530 | 1530 | mapData.put("fitness", fitness); |
1531 | 1531 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java
View file @
52469eb
... | ... | @@ -184,7 +184,7 @@ |
184 | 184 | |
185 | 185 | /** |
186 | 186 | * 建档统计 |
187 | - * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 | |
187 | + * @param statistType 1=占比 2=环比 | |
188 | 188 | * @param ageType 1=全部年龄 2=20岁以下 3=20-30岁 4=30-40岁 5=40岁以上 |
189 | 189 | * @param patientType 建档孕周 1=孕早期 2=孕中期 3=孕晚期 |
190 | 190 | * @return |
... | ... | @@ -203,6 +203,7 @@ |
203 | 203 | List<Object> line = new ArrayList<>(); |
204 | 204 | Map<String, Object> barMap = new HashMap<>(); |
205 | 205 | Map<String, Object> lineMap = new HashMap<>(); |
206 | + List<Map<String, Date>> range = DateUtil.getRange(startDate, endDate); | |
206 | 207 | |
207 | 208 | if(StringUtils.isNotEmpty(aredId)) { // 按照医院统计 |
208 | 209 | List<String> patientIds = new ArrayList<>(); |
... | ... | @@ -217,6 +218,47 @@ |
217 | 218 | xDatas.add(couponMapper.findHospitalNameById((String) mappedResult.get("_id"))); |
218 | 219 | bar.add((Integer) mappedResult.get("count")); |
219 | 220 | } |
221 | + | |
222 | + // 拼装tab数据 | |
223 | + titleList.add("医院名称"); | |
224 | + titleList.add("统计指标(人)"); | |
225 | + for (Map<String, Date> map : range) { | |
226 | + titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); | |
227 | + } | |
228 | + Map<String, Map<String, Integer>> tempMap = new HashMap<>(); | |
229 | + for (Patients patient : patients) { | |
230 | + if(tempMap.containsKey(patient.getHospitalId())) { | |
231 | + Map<String, Integer> map = tempMap.get(patient.getHospitalId()); | |
232 | + for (Map<String, Date> dateMap : range) { | |
233 | + String cname = DateUtil.getyyyy_mm(dateMap.get("cname")); | |
234 | + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() | |
235 | + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { | |
236 | + map.put(cname, map.containsKey(cname) ? map.get(cname) + 1 : 1); | |
237 | + break; | |
238 | + } | |
239 | + } | |
240 | + } else { | |
241 | + Map<String, Integer> temp = new HashMap<>(); | |
242 | + for (Map<String, Date> dateMap : range) { | |
243 | + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() | |
244 | + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { | |
245 | + temp.put(DateUtil.getyyyy_mm(dateMap.get("cname")), 1); | |
246 | + break; | |
247 | + } | |
248 | + } | |
249 | + tempMap.put(patient.getHospitalId(), temp); | |
250 | + } | |
251 | + } | |
252 | + for (Map.Entry<String, Map<String, Integer>> entry : tempMap.entrySet()) { | |
253 | + List<String> tempList = new ArrayList<>(); | |
254 | + tempList.add(couponMapper.findHospitalNameById(entry.getKey())); | |
255 | + tempList.add("建档人数"); | |
256 | + for (Map<String, Date> map : range) { | |
257 | + tempList.add(entry.getValue().containsKey(DateUtil.getyyyy_mm(map.get("cname"))) ? | |
258 | + entry.getValue().get(DateUtil.getyyyy_mm(map.get("cname"))) + "" : "0"); | |
259 | + } | |
260 | + tabList.add(tempList); | |
261 | + } | |
220 | 262 | } else { |
221 | 263 | Map<Integer, Integer> areaCountMap = new HashMap<>(); |
222 | 264 | String groupKey = StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"; // 按照区县或者市统计 |
223 | 265 | |
224 | 266 | |
225 | 267 | |
226 | 268 | |
227 | 269 | |
228 | 270 | |
229 | 271 | |
230 | 272 | |
231 | 273 | |
... | ... | @@ -242,94 +284,89 @@ |
242 | 284 | } |
243 | 285 | |
244 | 286 | // 拼装tab数据 |
245 | - List<Map<String, Date>> range = DateUtil.getRange(startDate, endDate); | |
246 | - if(StringUtils.isNotEmpty(cityId)) { // 按照区县来 | |
247 | - titleList.add(""); | |
248 | - titleList.add(""); | |
249 | - titleList.add(""); | |
250 | - for (Map<String, Date> map : range) { | |
251 | - titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); | |
252 | - } | |
253 | - } else { // 按照城市来 | |
254 | - titleList.add("城市名称"); | |
255 | - titleList.add("机构数"); | |
256 | - titleList.add("统计指标(人)"); | |
257 | - for (Map<String, Date> map : range) { | |
258 | - titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); | |
259 | - } | |
260 | - tabList.add(titleList); | |
261 | - List<Map<String, Object>> infos = new ArrayList<>(); | |
262 | - for (Patients patient : patients) { | |
263 | - for (Map<String, Object> map : hospitals) { | |
264 | - if(patient.getHospitalId().equals(map.get("id").toString())) { | |
265 | - boolean flag = true; | |
266 | - for (Map<String, Object> info : infos) { | |
267 | - if(map.get("cityId").equals(info.get("id"))) { | |
268 | - Set<String> hids = (Set<String>) info.get("hids"); | |
269 | - hids.add(patient.getHospitalId()); | |
270 | - for (Map<String, Date> dateMap : range) { | |
271 | - if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() | |
272 | - && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { | |
273 | - String monthKey = DateUtil.getyyyy_mm(dateMap.get("cname")); | |
274 | - if(info.containsKey(monthKey)) { | |
275 | - info.put(monthKey, (Integer) info.get(monthKey) + 1); | |
276 | - flag = false; | |
277 | - } else { | |
278 | - info.put(monthKey, 1); | |
279 | - flag = false; | |
280 | - } | |
281 | - } | |
282 | - } | |
283 | - } | |
284 | - } | |
285 | - if(flag) { | |
287 | + titleList.add((StringUtils.isNotEmpty(cityId) ? "区县" : "城市") + "名称"); | |
288 | + titleList.add("机构数"); | |
289 | + titleList.add("统计指标(人)"); | |
290 | + for (Map<String, Date> map : range) { | |
291 | + titleList.add(DateUtil.getyyyy_mm(map.get("cname"))); | |
292 | + } | |
293 | + | |
294 | + List<Map<String, Object>> infos = new ArrayList<>(); | |
295 | + for (Patients patient : patients) { | |
296 | + for (Map<String, Object> map : hospitals) { | |
297 | + if(patient.getHospitalId().equals(map.get("id").toString())) { | |
298 | + boolean flag = true; | |
299 | + for (Map<String, Object> info : infos) { | |
300 | + if(map.get((StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId")).equals(info.get("id"))) { | |
301 | + Set<String> hids = (Set<String>) info.get("hids"); | |
302 | + hids.add(patient.getHospitalId()); | |
286 | 303 | for (Map<String, Date> dateMap : range) { |
287 | 304 | if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() |
288 | 305 | && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { |
289 | 306 | String monthKey = DateUtil.getyyyy_mm(dateMap.get("cname")); |
290 | - Map<String, Object> info = new HashMap<>(); | |
291 | - Set<String> hids = new HashSet<>(); | |
292 | - hids.add(patient.getHospitalId()); | |
293 | - info.put(monthKey, 1); | |
294 | - info.put("id", map.get("cityId")); | |
295 | - info.put("hids", hids); | |
296 | - infos.add(info); | |
307 | + if(info.containsKey(monthKey)) { | |
308 | + info.put(monthKey, (Integer) info.get(monthKey) + 1); | |
309 | + flag = false; | |
310 | + } else { | |
311 | + info.put(monthKey, 1); | |
312 | + flag = false; | |
313 | + } | |
297 | 314 | } |
298 | 315 | } |
299 | 316 | } |
300 | 317 | } |
318 | + if(flag) { | |
319 | + for (Map<String, Date> dateMap : range) { | |
320 | + if(patient.getBookbuildingDate().getTime() >= dateMap.get("start").getTime() | |
321 | + && patient.getBookbuildingDate().getTime() < dateMap.get("end").getTime()) { | |
322 | + String monthKey = DateUtil.getyyyy_mm(dateMap.get("cname")); | |
323 | + Map<String, Object> info = new HashMap<>(); | |
324 | + Set<String> hids = new HashSet<>(); | |
325 | + hids.add(patient.getHospitalId()); | |
326 | + info.put(monthKey, 1); | |
327 | + info.put("id", map.get((StringUtils.isNotEmpty(cityId) ? "areaId" : "cityId"))); | |
328 | + info.put("hids", hids); | |
329 | + infos.add(info); | |
330 | + } | |
331 | + } | |
332 | + } | |
301 | 333 | } |
302 | 334 | } |
335 | + } | |
303 | 336 | |
304 | - for (Map<String, Object> info : infos) { | |
305 | - List<String> tempList = new ArrayList<>(); | |
306 | - tempList.add(findName(info.get("id"))); | |
307 | - tempList.add(((Set<String>) info.get("hids")).size() + ""); | |
308 | - tempList.add("建档总数"); | |
309 | - for (Map<String, Date> map : range) { | |
310 | - tempList.add(info.containsKey(DateUtil.getyyyy_mm(map.get("cname"))) ? | |
311 | - info.get(DateUtil.getyyyy_mm(map.get("cname"))) + "" : "0"); | |
312 | - } | |
313 | - tabList.add(tempList); | |
337 | + for (Map<String, Object> info : infos) { | |
338 | + List<String> tempList = new ArrayList<>(); | |
339 | + tempList.add(findName(info.get("id"))); | |
340 | + tempList.add(((Set<String>) info.get("hids")).size() + ""); | |
341 | + tempList.add("建档总数"); | |
342 | + for (Map<String, Date> map : range) { | |
343 | + tempList.add(info.containsKey(DateUtil.getyyyy_mm(map.get("cname"))) ? | |
344 | + info.get(DateUtil.getyyyy_mm(map.get("cname"))) + "" : "0"); | |
314 | 345 | } |
315 | - System.out.println(tabList); | |
316 | - } | |
346 | + tabList.add(tempList); | |
317 | 347 | } |
348 | + System.out.println(tabList); | |
349 | + } | |
318 | 350 | |
319 | - setTabListInfo(tabList); | |
351 | + tabList.add(0, titleList); | |
352 | + setTabListInfo(tabList, StringUtils.isNotEmpty(aredId) ? 2 : 3); | |
320 | 353 | |
321 | 354 | barMap.put("data", bar); |
322 | 355 | barMap.put("type", "bar"); |
323 | 356 | barMap.put("name", "建档总数"); |
324 | 357 | series.add(barMap); |
325 | 358 | |
326 | - Integer count = 0; | |
327 | - for (Integer num : bar) { | |
328 | - count += num; | |
359 | + if(statistType == 1) { | |
360 | + Integer count = 0; | |
361 | + for (Integer num : bar) { | |
362 | + count += num; | |
363 | + } | |
364 | + for (Integer num : bar) { | |
365 | + line.add(MathUtil.getProportion(num, count)); | |
366 | + } | |
367 | + } else if(statistType == 2) { | |
368 | + | |
329 | 369 | } |
330 | - for (Integer num : bar) { | |
331 | - line.add(MathUtil.getProportion(num, count)); | |
332 | - } | |
333 | 370 | lineMap.put("data", line); |
334 | 371 | lineMap.put("type", "line"); |
335 | 372 | lineMap.put("name", "建档总数"); |
... | ... | @@ -344,7 +381,7 @@ |
344 | 381 | return RespBuilder.buildSuccess(restMap); |
345 | 382 | } |
346 | 383 | |
347 | - private void setTabListInfo(List<List<String>> tabList) { | |
384 | + private void setTabListInfo(List<List<String>> tabList, int index) { | |
348 | 385 | if(CollectionUtils.isNotEmpty(tabList)) { |
349 | 386 | for (int i = 0; i < tabList.size(); i++) { |
350 | 387 | List<String> list = tabList.get(i); |
... | ... | @@ -354,7 +391,7 @@ |
354 | 391 | list.add("合计"); |
355 | 392 | } else { |
356 | 393 | int count = 0; |
357 | - for (int j = 3; j < list.size(); j++) { | |
394 | + for (int j = index; j < list.size(); j++) { | |
358 | 395 | count += Integer.parseInt(list.get(j)); |
359 | 396 | } |
360 | 397 | list.add(0, ++seq + ""); |
361 | 398 | |
... | ... | @@ -464,12 +501,21 @@ |
464 | 501 | return patients; |
465 | 502 | } |
466 | 503 | |
467 | - // 建档孕周 1=孕早期 2=孕中期 3=孕晚期 | |
504 | + // 建档孕周 1=孕早期(0~12周) 2=孕中期(13-27) 3=孕晚期(28~42) | |
468 | 505 | private void doFilter(List<Patients> patients, Integer ageType, Integer patientType) { |
469 | 506 | if(patientType != null) { |
470 | 507 | Iterator<Patients> iterator = patients.iterator(); |
471 | 508 | while (iterator.hasNext()) { |
472 | - | |
509 | + Integer week = DateUtil.getWeek(iterator.next().getLastMenses(), new Date()); | |
510 | + if(week != null) { | |
511 | + if(patientType == 1 && week > 12) { | |
512 | + iterator.remove(); | |
513 | + } else if(patientType == 2 && (week < 13 || week > 27)) { | |
514 | + iterator.remove(); | |
515 | + } else if(patientType == 3 && week < 28) { | |
516 | + iterator.remove(); | |
517 | + } | |
518 | + } | |
473 | 519 | } |
474 | 520 | } |
475 | 521 | if (ageType != null) { |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MathUtil.java
View file @
52469eb
... | ... | @@ -77,6 +77,24 @@ |
77 | 77 | return "0.00%"; |
78 | 78 | } |
79 | 79 | |
80 | + public static String getProportion(Integer num, Integer count) { | |
81 | + if(num != null && StringUtils.isNumeric(num.toString()) && count != null && count != 0) { | |
82 | + Double division = Double.parseDouble(division(Integer.parseInt(num.toString()), count)) * 100; | |
83 | + String s = doubleFormat(division); | |
84 | + s = removeZero(s); | |
85 | + return s; | |
86 | + } | |
87 | + return "0"; | |
88 | + } | |
89 | + | |
90 | + public static String removeZero(String s) { | |
91 | + if(StringUtils.isNotEmpty(s) && ((s.endsWith("0") && s.contains(".")) || s.endsWith("."))) { | |
92 | + s = s.substring(0, s.length() - 1); | |
93 | + return removeZero(s); | |
94 | + } | |
95 | + return s; | |
96 | + } | |
97 | + | |
80 | 98 | public static String getProportion(Object obj, Object count) { |
81 | 99 | if(StringUtils.isNotBlank("count") && StringUtils.isNumeric(count.toString())) |
82 | 100 | return getProportion(obj, Integer.parseInt(count.toString())); |
... | ... | @@ -92,6 +110,10 @@ |
92 | 110 | */ |
93 | 111 | public static Double division(Double a, Double b, Integer digit) { |
94 | 112 | return new BigDecimal(a / b).setScale(digit, BigDecimal.ROUND_HALF_UP).doubleValue(); |
113 | + } | |
114 | + | |
115 | + public static void main(String[] args) { | |
116 | + System.out.println(getProportion(30, 100)); | |
95 | 117 | } |
96 | 118 | |
97 | 119 |