diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java index 546ae23..b19583e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEvaluationCriterionServiceImpl.java @@ -716,7 +716,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri return new BaseResponse().setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("未查到该儿童的建档数据"); } Integer month = DateUtil.getBabyAgeMonth(babyModel.getBirth(), new Date()); - Integer currentMonth = getCurrentMonth(month, 3, 1); + //Integer currentMonth = getCurrentMonth(month, 3, 1); model.setBirth(babyModel.getBirth()); model.setCardNo(babyModel.getCardNo()); model.setVcCardNo(babyModel.getVcCardNo()); @@ -731,7 +731,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri // 总分 model.setTotalScore(model.getStandingComponent() + model.getSeatComponent() + model.getSupineComponent() + model.getLieProstratComponent()); // 百分位 - BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, currentMonth); + BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, month); model.setPercentileScore(babyEvaluationCriterionModel.getPercent()); mongoTemplate.insert(model); } @@ -739,7 +739,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri if (StringUtils.isNotEmpty(id)) { Integer month = DateUtil.getBabyAgeMonth(model.getBirth(), mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), ExerciseAppraisalModel.class).getCreateTime()); - Integer currentMonth = getCurrentMonth(month, 3, 1); + //Integer currentMonth = getCurrentMonth(month, 3, 1); model.setCreateUser(null); model.setCreateTime(null); model.setBirth(null); @@ -756,7 +756,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri // 总分 model.setTotalScore(model.getStandingComponent() + model.getSeatComponent() + model.getSupineComponent() + model.getLieProstratComponent()); // 百分位 - BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, currentMonth); + BabyEvaluationCriterionModel babyEvaluationCriterionModel = getBabyEvaluationCriterionModel(model, month); model.setPercentileScore(babyEvaluationCriterionModel.getPercent()); Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(model)); mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(id)), update, ExerciseAppraisalModel.class); @@ -764,14 +764,23 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri return new BaseResponse(); } + /** + * 根据总分数和月龄匹配最符合的数据 + * + * @param model + * @param month + * @return + */ private BabyEvaluationCriterionModel getBabyEvaluationCriterionModel(ExerciseAppraisalModel model, Integer month) { Integer totalScore = model.getTotalScore(); + // 获取边界最大和最小分数 List modelList = mongoTemplate.find(Query.query(Criteria.where("month").is(month).and("type").is(1)), BabyEvaluationCriterionModel.class); BabyEvaluationCriterionModel evaluationCriterionModel = modelList.get(0); Integer maxScore = evaluationCriterionModel.getMaxScore(); Integer minScore = evaluationCriterionModel.getMinScore(); + Integer scoreIndex = maxScore < totalScore ? maxScore : minScore > totalScore ? minScore : totalScore; List criterionModel = mongoTemplate.find(Query.query(Criteria.where("score").gte(scoreIndex).and("month").is(month).and("type").is(1)). with(new Sort(new Sort.Order(Sort.Direction.ASC, "minScore")) ), BabyEvaluationCriterionModel.class); @@ -841,7 +850,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri // 总分 Integer startScore = param.getStartScore(); Integer endScore = param.getEndScore(); - if (startScore != null && endCheckTime != null && endScore >= startScore) { + if (startScore != null && endScore != null && endScore >= startScore) { query.addCriteria(Criteria.where("totalScore").gte(startScore).lte(endScore)); }