Commit c1bdbdfab06deda9aee964e3000ae34ef07069d1
1 parent
20ca66481e
Exists in
master
and in
6 other branches
修复bug
Showing 1 changed file with 47 additions and 27 deletions
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java
View file @
c1bdbdf
... | ... | @@ -17,6 +17,10 @@ |
17 | 17 | import org.springframework.beans.factory.annotation.Autowired; |
18 | 18 | import org.springframework.data.domain.Sort; |
19 | 19 | import org.springframework.data.mongodb.core.MongoTemplate; |
20 | +import org.springframework.data.mongodb.core.aggregation.Aggregation; | |
21 | +import org.springframework.data.mongodb.core.aggregation.AggregationResults; | |
22 | +import org.springframework.data.mongodb.core.aggregation.GroupOperation; | |
23 | +import org.springframework.data.mongodb.core.aggregation.MatchOperation; | |
20 | 24 | import org.springframework.data.mongodb.core.query.Criteria; |
21 | 25 | import org.springframework.data.mongodb.core.query.Query; |
22 | 26 | import org.springframework.data.mongodb.core.query.Update; |
23 | 27 | |
24 | 28 | |
25 | 29 | |
26 | 30 | |
27 | 31 | |
... | ... | @@ -60,46 +64,46 @@ |
60 | 64 | if (month > 84) { |
61 | 65 | return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("操作失败,当前儿童年龄大于7岁"); |
62 | 66 | } |
63 | - int month3 = getCurrentMonth(month, 3); | |
67 | + int month3 = getCurrentMonth(month, 3, 3); | |
64 | 68 | if (month3 >= 3 && month3 <= 72) { |
65 | 69 | |
66 | 70 | // 大于等于3月龄 小于等于72月龄 |
67 | - int month2 = getCurrentMonth(month3, 2); | |
68 | - int month1 = getCurrentMonth(month2, 2); | |
69 | - int month4 = getCurrentMonth(month3, 4); | |
70 | - int month5 = getCurrentMonth(month4, 4); | |
71 | + int month2 = getCurrentMonth(month3, 2, 3); | |
72 | + int month1 = getCurrentMonth(month2, 2, 3); | |
73 | + int month4 = getCurrentMonth(month3, 4, 3); | |
74 | + int month5 = getCurrentMonth(month4, 4, 3); | |
71 | 75 | months = new int[]{month1, month2, month3, month4, month5}; |
72 | 76 | |
73 | 77 | }else if (month3 < 3) { |
74 | 78 | if (month3 == 1) { |
75 | 79 | |
76 | 80 | // 等于1月龄 |
77 | - int month4 = getCurrentMonth(month3, 4); | |
78 | - int month5 = getCurrentMonth(month4, 4); | |
81 | + int month4 = getCurrentMonth(month3, 4, 3); | |
82 | + int month5 = getCurrentMonth(month4, 4, 3); | |
79 | 83 | months = new int[] {month3, month4, month5}; |
80 | 84 | |
81 | 85 | }else if (month3 == 2) { |
82 | 86 | |
83 | 87 | // 等于2月龄 |
84 | - int month2 = getCurrentMonth(month3, 2); | |
85 | - int month4 = getCurrentMonth(month3, 4); | |
86 | - int month5 = getCurrentMonth(month4, 4); | |
88 | + int month2 = getCurrentMonth(month3, 2, 3); | |
89 | + int month4 = getCurrentMonth(month3, 4, 3); | |
90 | + int month5 = getCurrentMonth(month4, 4, 3); | |
87 | 91 | months = new int[] {month2, month3, month4, month5}; |
88 | 92 | } |
89 | 93 | } else if (month3 > 72 && month3 <= 84) { |
90 | 94 | if (month3 == 78) { |
91 | 95 | |
92 | 96 | // 等于78月龄 |
93 | - int month2 = getCurrentMonth(month3, 2); | |
94 | - int month1 = getCurrentMonth(month2, 2); | |
95 | - int month4 = getCurrentMonth(month3, 4); | |
97 | + int month2 = getCurrentMonth(month3, 2, 3); | |
98 | + int month1 = getCurrentMonth(month2, 2, 3); | |
99 | + int month4 = getCurrentMonth(month3, 4, 3); | |
96 | 100 | months = new int[]{month1, month2, month3, month4}; |
97 | 101 | |
98 | 102 | }else if (month3 == 84) { |
99 | 103 | |
100 | 104 | // 等于84月龄 |
101 | - int month2 = getCurrentMonth(month3, 2); | |
102 | - int month1 = getCurrentMonth(month2, 2); | |
105 | + int month2 = getCurrentMonth(month3, 2, 3); | |
106 | + int month1 = getCurrentMonth(month2, 2, 3); | |
103 | 107 | months = new int[]{month1, month2, month3}; |
104 | 108 | } |
105 | 109 | } |
106 | 110 | |
107 | 111 | |
108 | 112 | |
... | ... | @@ -118,16 +122,16 @@ |
118 | 122 | * @param index 表示下标位置 |
119 | 123 | * @return |
120 | 124 | */ |
121 | - private Integer getCurrentMonth(Integer month, Integer index){ | |
125 | + private Integer getCurrentMonth(Integer month, Integer index, Integer type){ | |
122 | 126 | Query query = new Query(); |
123 | 127 | if (2 == index){ |
124 | - query.addCriteria(Criteria.where("month").lt(month).and("yn").is(YnEnums.YES.getId())); | |
128 | + query.addCriteria(Criteria.where("month").lt(month).and("yn").is(YnEnums.YES.getId()).and("type").is(type)); | |
125 | 129 | query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "month"))); |
126 | 130 | } else if (3 == index) { |
127 | - query.addCriteria(Criteria.where("month").lte(month).and("yn").is(YnEnums.YES.getId())); | |
131 | + query.addCriteria(Criteria.where("month").lte(month).and("yn").is(YnEnums.YES.getId()).and("type").is(type)); | |
128 | 132 | query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "month"))); |
129 | 133 | } else if (4 == index) { |
130 | - query.addCriteria(Criteria.where("month").gt(month).and("yn").is(YnEnums.YES.getId())); | |
134 | + query.addCriteria(Criteria.where("month").gt(month).and("yn").is(YnEnums.YES.getId()).and("type").is(type)); | |
131 | 135 | query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "month"))); |
132 | 136 | } |
133 | 137 | |
... | ... | @@ -222,6 +226,15 @@ |
222 | 226 | |
223 | 227 | mapList.add(objectMap); |
224 | 228 | } |
229 | + BigDecimal defOldVal = BigDecimal.ZERO; | |
230 | + if (checkMonth - 2 > 1) { | |
231 | + /*MatchOperation match = Aggregation.match(Criteria.where("")); | |
232 | + GroupOperation group = Aggregation.group(); | |
233 | + Aggregation aggregation = Aggregation.newAggregation(match, group); | |
234 | + AggregationResults<Map> aggregate = mongoTemplate.aggregate(aggregation, Map.class); | |
235 | + List<Map> mappedResults = aggregate.getMappedResults();*/ | |
236 | + //mongoTemplate.find(Query.query(Criteria.where().)) | |
237 | + } | |
225 | 238 | int developmentQuotient = 0; |
226 | 239 | if (currentProjectVal > 0) { |
227 | 240 | mentalAge = new BigDecimal(currentProjectVal).divide(new BigDecimal(5), 0, BigDecimal.ROUND_HALF_UP).intValue(); |
228 | 241 | |
... | ... | @@ -663,10 +676,10 @@ |
663 | 676 | String babyId = param.getBabyId(); |
664 | 677 | boolean isPass = paramValid(param); |
665 | 678 | ExerciseAppraisalModel model = param; |
666 | - model.setCheckTime(new Date()); | |
667 | 679 | if (!isPass) { |
668 | 680 | return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("参数缺失"); |
669 | 681 | } |
682 | + model.setCheckTime(new Date(model.getCheckTime().getTime() - 28800000)); | |
670 | 683 | String id = param.getId(); |
671 | 684 | if (StringUtils.isEmpty(id)) { |
672 | 685 | // 新增运动测评 |
... | ... | @@ -675,6 +688,7 @@ |
675 | 688 | return new BaseResponse().setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("未查到该儿童的建档数据"); |
676 | 689 | } |
677 | 690 | Integer month = DateUtil.getBabyAgeMonth(babyModel.getBirth(), new Date()); |
691 | + Integer currentMonth = getCurrentMonth(month, 3, 1); | |
678 | 692 | model.setBirth(babyModel.getBirth()); |
679 | 693 | model.setCardNo(babyModel.getCardNo()); |
680 | 694 | model.setVcCardNo(babyModel.getVcCardNo()); |
681 | 695 | |
... | ... | @@ -689,14 +703,15 @@ |
689 | 703 | // 总分 |
690 | 704 | model.setTotalScore(model.getStandingComponent() + model.getSeatComponent() + model.getSupineComponent() + model.getLieProstratComponent()); |
691 | 705 | // 百分位 |
692 | - BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, month); | |
706 | + BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, currentMonth); | |
693 | 707 | model.setPercentileScore(babyEvaluationCriterionModel.getPercent()); |
694 | 708 | mongoTemplate.insert(model); |
695 | 709 | } |
696 | 710 | |
697 | 711 | if (StringUtils.isNotEmpty(id)) { |
698 | - Integer month = DateUtil.getBabyAgeMonth(model.getBirth(), new Date()); | |
699 | - model.setCheckTime(null); | |
712 | + Integer month = DateUtil.getBabyAgeMonth(model.getBirth(), | |
713 | + mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), ExerciseAppraisalModel.class).getCreateTime()); | |
714 | + Integer currentMonth = getCurrentMonth(month, 3, 1); | |
700 | 715 | model.setCreateUser(null); |
701 | 716 | model.setCreateTime(null); |
702 | 717 | model.setBirth(null); |
... | ... | @@ -713,7 +728,7 @@ |
713 | 728 | // 总分 |
714 | 729 | model.setTotalScore(model.getStandingComponent() + model.getSeatComponent() + model.getSupineComponent() + model.getLieProstratComponent()); |
715 | 730 | // 百分位 |
716 | - BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, month); | |
731 | + BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, currentMonth); | |
717 | 732 | model.setPercentileScore(babyEvaluationCriterionModel.getPercent()); |
718 | 733 | Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(model)); |
719 | 734 | mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(id)), update, ExerciseAppraisalModel.class); |
... | ... | @@ -755,6 +770,10 @@ |
755 | 770 | if (CollectionUtils.isNotEmpty(models)) { |
756 | 771 | for (ExerciseAppraisalModel model : models) { |
757 | 772 | Map<String, String> map = BeanUtils.objectToStringMap(model); |
773 | + Date checkTime = model.getCheckTime(); | |
774 | + map.put("checkTimeStr", DateUtil.getyyyy_MM_dd(checkTime)); | |
775 | + map.put("checkMonthStr", DateUtil.getBabyMonthAge(model.getBirth(), checkTime)); | |
776 | + map.put("checkDoctorStr", usersMapper.getUsers(Integer.parseInt(model.getCheckDoctor())).getName()); | |
758 | 777 | add(map); |
759 | 778 | } |
760 | 779 | } |
... | ... | @@ -807,7 +826,7 @@ |
807 | 826 | |
808 | 827 | long count = mongoTemplate.count(query, ExerciseAppraisalModel.class); |
809 | 828 | param.mysqlBuild((int) count); |
810 | - query.skip(param.getLimit()).limit(param.getLimit()); | |
829 | + query.skip(param.getOffset()).limit(param.getLimit()); | |
811 | 830 | query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "createTime"))); |
812 | 831 | |
813 | 832 | List<ExerciseAppraisalModel> models = mongoTemplate.find(query, ExerciseAppraisalModel.class); |
... | ... | @@ -816,7 +835,8 @@ |
816 | 835 | Map<String, String> map = BeanUtils.objectToStringMap(model); |
817 | 836 | map.put("age", DateUtil.getBabyMonthAge(model.getBirth(), new Date())); |
818 | 837 | map.put("checkTimeStr", DateUtil.gety_m_dhm(model.getCheckTime())); |
819 | - map.put("checkDoctorStr", usersMapper.getUsers(Integer.parseInt(model.getCheckDoctor())).getName()); | |
838 | + Users users = usersMapper.getUsers(Integer.parseInt(model.getCheckDoctor())); | |
839 | + map.put("checkDoctorStr",users == null ? "" : users.getName()); | |
820 | 840 | maps.add(map); |
821 | 841 | } |
822 | 842 | BaseListResponse baseListResponse = new BaseListResponse(); |
... | ... | @@ -841,7 +861,7 @@ |
841 | 861 | || param.getSeatOutsideIndexs() == null |
842 | 862 | || param.getStandingComponent() == null || param.getStandingInside() == null |
843 | 863 | || param.getStandingOutside() == null || param.getStandingInsideIndexs() == null |
844 | - || param.getStandingOutsideIndexs() == null) { | |
864 | + || param.getStandingOutsideIndexs() == null || param.getCheckTime() == null) { | |
845 | 865 | return false; |
846 | 866 | } |
847 | 867 | return true; |