Commit 8e0f6ce04b2a25a92857fe1daf7755df64cd9454
1 parent
3417ee0e40
Exists in
master
and in
6 other branches
update
Showing 3 changed files with 266 additions and 5 deletions
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java
View file @
8e0f6ce
| ... | ... | @@ -58,7 +58,19 @@ |
| 58 | 58 | return babyEvaluationCriterionService.query(getUserId(request), jsonObject, false); |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | - | |
| 61 | + /** | |
| 62 | + * 根据查询号查询儿童(承德环境) | |
| 63 | + * | |
| 64 | + * @param jsonObject | |
| 65 | + * @param request | |
| 66 | + * @return | |
| 67 | + */ | |
| 68 | + @ResponseBody | |
| 69 | + @TokenRequired | |
| 70 | + @RequestMapping(method = RequestMethod.POST, value = "/queryCddz") | |
| 71 | + private BaseResponse queryCddz(@RequestBody JSONObject jsonObject, HttpServletRequest request) { | |
| 72 | + return babyEvaluationCriterionService.queryCddz(getUserId(request), jsonObject, false); | |
| 73 | + } | |
| 62 | 74 | /** |
| 63 | 75 | * 保存or更新神经心理项目 |
| 64 | 76 | * |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java
View file @
8e0f6ce
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java
View file @
8e0f6ce
| ... | ... | @@ -18,14 +18,12 @@ |
| 18 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
| 19 | 19 | import org.springframework.data.domain.Sort; |
| 20 | 20 | import org.springframework.data.mongodb.core.MongoTemplate; |
| 21 | -import org.springframework.data.mongodb.core.aggregation.Aggregation; | |
| 22 | -import org.springframework.data.mongodb.core.aggregation.AggregationResults; | |
| 23 | -import org.springframework.data.mongodb.core.aggregation.GroupOperation; | |
| 24 | -import org.springframework.data.mongodb.core.aggregation.MatchOperation; | |
| 21 | +import org.springframework.data.mongodb.core.aggregation.*; | |
| 25 | 22 | import org.springframework.data.mongodb.core.query.Criteria; |
| 26 | 23 | import org.springframework.data.mongodb.core.query.Query; |
| 27 | 24 | import org.springframework.data.mongodb.core.query.Update; |
| 28 | 25 | import org.springframework.stereotype.Service; |
| 26 | +import scala.Int; | |
| 29 | 27 | |
| 30 | 28 | import java.math.BigDecimal; |
| 31 | 29 | import java.text.DecimalFormat; |
| 32 | 30 | |
| ... | ... | @@ -78,7 +76,56 @@ |
| 78 | 76 | baseResponse.setObject(stringObjectMap); |
| 79 | 77 | return baseResponse; |
| 80 | 78 | } |
| 79 | + public BaseResponse getItemListByBabyIdCddz(String babyId, Integer checkMonth, String id) { | |
| 80 | + Map<String, Object> stringObjectMap = new HashMap<>(); | |
| 81 | + int [] months = null; | |
| 82 | + if (StringUtils.isNotEmpty(babyId)) { | |
| 83 | + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyId)), BabyModel.class); | |
| 84 | + if (null != babyModel) { | |
| 85 | + Date birth = babyModel.getBirth(); | |
| 86 | + Integer month = checkMonth == null ? DateUtil.getBabyAgeMonth(birth, new Date()) : checkMonth; | |
| 87 | + if (month > 84) { | |
| 88 | + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("操作失败,当前儿童年龄大于7岁"); | |
| 89 | + } | |
| 90 | + if (month > 0) | |
| 91 | + { | |
| 92 | + List <Integer> intsCddz = getIntsCddz(3);//获取儿童测量评估标准 所有的月龄集合 | |
| 93 | + stringObjectMap = getListMapCddz(intsCddz, babyId, checkMonth, id); | |
| 94 | + } | |
| 81 | 95 | |
| 96 | + } | |
| 97 | + } | |
| 98 | + BaseResponse baseResponse = new BaseResponse(); | |
| 99 | + baseResponse.setObject(stringObjectMap); | |
| 100 | + return baseResponse; | |
| 101 | + } | |
| 102 | + | |
| 103 | + /** | |
| 104 | + * 获取 儿童测量评估标准 所有的月龄集合 | |
| 105 | + * | |
| 106 | + * @param type 3/儿童神经心理发育 | |
| 107 | + * @Author: 武涛涛 | |
| 108 | + * @Date: 2021/4/15 15:01 | |
| 109 | + */ | |
| 110 | + private List <Integer> getIntsCddz( Integer type) { | |
| 111 | + Criteria cm = Criteria.where("type").in(type).and("yn").ne(YnEnums.NO.getId()); | |
| 112 | + AggregationOperation matchM = Aggregation.match(cm); | |
| 113 | + AggregationOperation groupM = Aggregation.group("month");//.count().as("gwegllCount"); | |
| 114 | + AggregationOperation fieldsM = Aggregation.project("month"); | |
| 115 | + Aggregation aggregationM = Aggregation.newAggregation(matchM, groupM, fieldsM); | |
| 116 | + AggregationResults <HashMap> resultM = this.mongoTemplate.aggregate(aggregationM, | |
| 117 | + "lyms_baby_evaluationCriterion", HashMap.class);//BabyEvaluationCriterionModel HashMap | |
| 118 | + List <Integer> integerList = new ArrayList <>(); | |
| 119 | + if (resultM != null && CollectionUtils.isNotEmpty(resultM.getMappedResults())) { | |
| 120 | + for (HashMap hashMap: resultM.getMappedResults() ) { | |
| 121 | + if(hashMap.containsKey("_id")){ | |
| 122 | + integerList.add((Integer) hashMap.get("_id")); | |
| 123 | + } | |
| 124 | + } | |
| 125 | + } | |
| 126 | + Collections.sort(integerList); | |
| 127 | + return integerList; | |
| 128 | + } | |
| 82 | 129 | private int[] getInts(int[] months, Integer month) { |
| 83 | 130 | int month3 = getCurrentMonth(month, 3, 3); |
| 84 | 131 | if (month3 >= 3 && month3 <= 72) { |
| 85 | 132 | |
| ... | ... | @@ -238,7 +285,92 @@ |
| 238 | 285 | resultMap.put("configs", mapList); |
| 239 | 286 | return resultMap; |
| 240 | 287 | } |
| 288 | + /** | |
| 289 | + * 和以前的规则一样,只是这里是 List <Integer> months | |
| 290 | + * | |
| 291 | + * @param months | |
| 292 | + * @param babyId | |
| 293 | + * @param checkMonth | |
| 294 | + * @param id | |
| 295 | + * @Author: 武涛涛 | |
| 296 | + * @Date: 2021/4/15 15:01 | |
| 297 | + */ | |
| 298 | + private Map<String, Object> getListMapCddz( List <Integer> months, String babyId, Integer checkMonth, String id) { | |
| 299 | + Map<String, Object> resultMap = new HashMap<>(); | |
| 300 | + String neuroPsychologicalId = null; | |
| 241 | 301 | |
| 302 | + | |
| 303 | + // 当前本月的被勾选的总分数 | |
| 304 | + List<Map<String, Object>> mapList = new LinkedList<>(); | |
| 305 | + for (int i = 0, size = months.size(); i < size ; i++) { | |
| 306 | + | |
| 307 | + int currentMonth = months.get(i); | |
| 308 | + // 月龄对应的数据 | |
| 309 | + Map<String, Object> objectMap = new HashMap<>(); | |
| 310 | + Query query = Query.query(Criteria.where("month").is(currentMonth).and("yn").is(YnEnums.YES.getId()).and("type").is(3)); | |
| 311 | + query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "month"))); | |
| 312 | + | |
| 313 | + List<BabyEvaluationCriterionModel > babyEvaluationCriterionModels = mongoTemplate.find(query, BabyEvaluationCriterionModel.class); | |
| 314 | + Map<Integer, List<BabyEvaluationCriterionModel>> listGroup = getListGroup(babyEvaluationCriterionModels); | |
| 315 | + List<Map<String, Object>> listGroupMaps = new LinkedList<>(); | |
| 316 | + Set<Map.Entry<Integer, List<BabyEvaluationCriterionModel>>> entries = listGroup.entrySet(); | |
| 317 | + for (Map.Entry<Integer, List<BabyEvaluationCriterionModel>> entry : entries) { | |
| 318 | + Map<String, Object> map = new HashMap<>(); | |
| 319 | + List<BabyEvaluationCriterionModel> models = entry.getValue(); | |
| 320 | + Iterator<BabyEvaluationCriterionModel> iterator = models.iterator(); | |
| 321 | + List<Map<String, Object>> list = new LinkedList<>(); | |
| 322 | + while (iterator.hasNext()) { | |
| 323 | + BabyEvaluationCriterionModel next = iterator.next(); | |
| 324 | + final String configId = next.getId(); | |
| 325 | + boolean isSelected = false; | |
| 326 | + Double projectVal = next.getProjectVal(); | |
| 327 | + if (checkMonth != null) { | |
| 328 | + BabyNeuroPsychologicalModel one = mongoTemplate.findOne(Query.query( | |
| 329 | + Criteria.where("configId").in(new ArrayList<String>(){{add(configId);}}). | |
| 330 | + and("_id").is(id)), BabyNeuroPsychologicalModel.class); | |
| 331 | + if (one != null) { | |
| 332 | + isSelected = true; | |
| 333 | + String oneId = one.getId(); | |
| 334 | + if (neuroPsychologicalId == null) { | |
| 335 | + neuroPsychologicalId = oneId; | |
| 336 | + } | |
| 337 | + } | |
| 338 | + } | |
| 339 | + Map<String, Object> m = new HashMap<>(16); | |
| 340 | + m.put("configId", configId); | |
| 341 | + m.put("projectName", next.getProjectName()); | |
| 342 | + m.put("projectVal", projectVal); | |
| 343 | + m.put("isSelected", isSelected); | |
| 344 | + list.add(m); | |
| 345 | + } | |
| 346 | + map.put("projectType", entry.getKey()); | |
| 347 | + map.put("detailList", list); | |
| 348 | + listGroupMaps.add(map); | |
| 349 | + } | |
| 350 | + | |
| 351 | + | |
| 352 | + // 当前测试时月龄 | |
| 353 | + objectMap.put("checkMonth", checkMonth); | |
| 354 | + // 配置对应的月龄 | |
| 355 | + objectMap.put("month", currentMonth); | |
| 356 | + // 领域组 | |
| 357 | + objectMap.put("listGroup", listGroupMaps); | |
| 358 | + | |
| 359 | + | |
| 360 | + // 当前检查时间 | |
| 361 | + BabyNeuroPsychologicalModel one = mongoTemplate.findOne(Query.query( | |
| 362 | + Criteria.where("babyId").is(babyId).and("yn").is(YnEnums.YES.getId()).and("checkMonth").is(checkMonth)), BabyNeuroPsychologicalModel.class); | |
| 363 | + String currentCheckTime = one == null | |
| 364 | + ? "" | |
| 365 | + : (one.getUpdateTime() == null ? DateUtil.getYmd(one.getCreateTime()) : DateUtil.getYmd(one.getUpdateTime())); | |
| 366 | + objectMap.put("currentCheckTime", currentCheckTime); | |
| 367 | + | |
| 368 | + mapList.add(objectMap); | |
| 369 | + } | |
| 370 | + resultMap.put("configs", mapList); | |
| 371 | + return resultMap; | |
| 372 | + } | |
| 373 | + | |
| 242 | 374 | /** |
| 243 | 375 | * |
| 244 | 376 | * @param checkMonth 月龄 |
| ... | ... | @@ -439,6 +571,122 @@ |
| 439 | 571 | |
| 440 | 572 | // 根据当前儿童显示项目领域的配置信息,以供 add |
| 441 | 573 | Map<String, Object> objectMap = (Map<String, Object>) getItemListByBabyId(babyId, checkMonth, null).getObject(); |
| 574 | + objectMap.put("checkTimeStr", ""); | |
| 575 | + objectMap.put("checkMonth", checkMonthStr); | |
| 576 | + | |
| 577 | + objectList.add(objectMap); | |
| 578 | + baseResponse.setObject(objectList); | |
| 579 | + return baseResponse; | |
| 580 | + | |
| 581 | + } | |
| 582 | + | |
| 583 | + /** | |
| 584 | + * 获取儿童神经心理发育检查项(承德环境) | |
| 585 | + * | |
| 586 | + * @param userId | |
| 587 | + * @param jsonObject | |
| 588 | + * @return | |
| 589 | + */ | |
| 590 | + @Override | |
| 591 | + public BaseResponse queryCddz(Integer userId, JSONObject jsonObject, boolean isPush) { | |
| 592 | + String hospitalId = autoMatchFacade.getHospitalId(userId); | |
| 593 | + String babyId = jsonObject.getString("babyId"); | |
| 594 | + BaseResponse baseResponse = new BaseResponse(); | |
| 595 | + if (StringUtils.isEmpty(babyId)) { | |
| 596 | + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("参数缺失"); | |
| 597 | + } | |
| 598 | + List<BabyNeuroPsychologicalModel> models = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyId).and("hospitalId").is(hospitalId).and("yn").is(YnEnums.YES.getId())). | |
| 599 | + with(new Sort(new Sort.Order(Sort.Direction.ASC, "createTime"))), BabyNeuroPsychologicalModel.class); | |
| 600 | + List<Object> objectList = new ArrayList<>(); | |
| 601 | + Integer checkMonth = null; | |
| 602 | + String checkMonthStr = ""; | |
| 603 | + | |
| 604 | + if (CollectionUtils.isNotEmpty(models)) { | |
| 605 | + | |
| 606 | + if (isPush){ | |
| 607 | + BabyNeuroPsychologicalModel model = models.get(models.size() - 1); | |
| 608 | + BaseResponse response = getItemListByBabyIdCddz(model.getBabyId(), model.getCheckMonth(), model.getId()); | |
| 609 | + return response; | |
| 610 | + } else { | |
| 611 | + // 若该儿童做过该项检查,一次查出 | |
| 612 | + for (BabyNeuroPsychologicalModel model : models) { | |
| 613 | + BaseResponse itemListByBabyId = getItemListByBabyIdCddz(model.getBabyId(), model.getCheckMonth(), model.getId()); | |
| 614 | + if (itemListByBabyId.getErrorcode() != 0) { | |
| 615 | + // 出错直接return | |
| 616 | + return itemListByBabyId; | |
| 617 | + } | |
| 618 | + Map<String, Object> objectMap = (Map<String, Object>) itemListByBabyId.getObject(); | |
| 619 | + objectMap.put("checkTimeStr", DateUtil.getyyyy_MM_dd(model.getCreateTime())); | |
| 620 | + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("id").is(babyId)), BabyModel.class); | |
| 621 | + if (babyModel != null) { | |
| 622 | + checkMonthStr = DateUtil.getBabyMonthAge(babyModel.getBirth(), model.getCreateTime()); | |
| 623 | + } | |
| 624 | + objectMap.put("checkMonth", checkMonthStr); | |
| 625 | + objectMap.put("id", model.getId()); | |
| 626 | + | |
| 627 | + // 发育商、智能、等级评价 | |
| 628 | + objectMap.put("developmentQuotient", model.getDevelopmentQuotient()); | |
| 629 | + objectMap.put("aptitudeName", model.getAptitudeName()); | |
| 630 | + objectMap.put("levelName", model.getLevelName()); | |
| 631 | + | |
| 632 | + // 智龄 | |
| 633 | + int double1Dq = 0, | |
| 634 | + double2Dq = 0, | |
| 635 | + double3Dq = 0, | |
| 636 | + double4Dq = 0, | |
| 637 | + double5Dq = 0; | |
| 638 | + Double double1Z = 0.00D, | |
| 639 | + double2Z = 0.00D, | |
| 640 | + double3Z = 0.00D, | |
| 641 | + double4Z = 0.00D, | |
| 642 | + double5Z = 0.00D; | |
| 643 | + Double zl = 0.00D; | |
| 644 | + | |
| 645 | + for (String configId : model.getConfigId()) { | |
| 646 | + BabyEvaluationCriterionModel criterionModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(configId)), BabyEvaluationCriterionModel.class); | |
| 647 | + zl += criterionModel.getProjectVal(); | |
| 648 | + // 1/大动作 2/精细动作 3/适应能力 4/语音 5/社交行为 | |
| 649 | + if (criterionModel != null) { | |
| 650 | + if (1 == criterionModel.getProjectType()) { | |
| 651 | + double1Z += criterionModel.getProjectVal(); | |
| 652 | + } else if (2 == criterionModel.getProjectType()) { | |
| 653 | + double2Z += criterionModel.getProjectVal(); | |
| 654 | + } else if (3 == criterionModel.getProjectType()) { | |
| 655 | + double3Z += criterionModel.getProjectVal(); | |
| 656 | + } else if (4 == criterionModel.getProjectType()) { | |
| 657 | + double4Z += criterionModel.getProjectVal(); | |
| 658 | + } else if (5 == criterionModel.getProjectType()) { | |
| 659 | + double5Z += criterionModel.getProjectVal(); | |
| 660 | + } | |
| 661 | + } | |
| 662 | + } | |
| 663 | + Integer month = model.getCheckMonth(); | |
| 664 | + int [] months = null; | |
| 665 | + months = getInts(months, month); | |
| 666 | + int month1 = months[0]; | |
| 667 | + List<BabyEvaluationCriterionModel> ecmodels = mongoTemplate.find(Query.query(Criteria.where("month").lt(month1).and("type").is(3)), BabyEvaluationCriterionModel.class); | |
| 668 | + for (BabyEvaluationCriterionModel m : ecmodels) { | |
| 669 | + zl += m.getProjectVal(); | |
| 670 | + } | |
| 671 | + | |
| 672 | + DecimalFormat df = new DecimalFormat("0.00"); | |
| 673 | + String zlStr = ""; | |
| 674 | + if (zl != 0.00) { | |
| 675 | + zlStr = String.format(df.format(zl / 5)); | |
| 676 | + } | |
| 677 | + Map<String, Object> reportMap = getStringObjectMap(DateUtil.getBabyAgeMonth(model.getBirth(), new Date() ), | |
| 678 | + double1Dq, double2Dq, double3Dq, double4Dq, double5Dq, double1Z, double2Z, double3Z, double4Z, double5Z); | |
| 679 | + | |
| 680 | + // 智龄、报表 | |
| 681 | + objectMap.put("zlStr", zlStr); | |
| 682 | + objectMap.put("report", reportMap); | |
| 683 | + objectList.add(objectMap); | |
| 684 | + } | |
| 685 | + } | |
| 686 | + } | |
| 687 | + | |
| 688 | + // 根据当前儿童显示项目领域的配置信息,以供 add | |
| 689 | + Map<String, Object> objectMap = (Map<String, Object>) getItemListByBabyIdCddz(babyId, checkMonth, null).getObject(); | |
| 442 | 690 | objectMap.put("checkTimeStr", ""); |
| 443 | 691 | objectMap.put("checkMonth", checkMonthStr); |
| 444 | 692 |