diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java index d0853fc..ab7b2b0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEvaluationCriterionController.java @@ -58,7 +58,19 @@ public class BabyEvaluationCriterionController extends BaseController { return babyEvaluationCriterionService.query(getUserId(request), jsonObject, false); } - + /** + * 根据查询号查询儿童(承德环境) + * + * @param jsonObject + * @param request + * @return + */ + @ResponseBody + @TokenRequired + @RequestMapping(method = RequestMethod.POST, value = "/queryCddz") + private BaseResponse queryCddz(@RequestBody JSONObject jsonObject, HttpServletRequest request) { + return babyEvaluationCriterionService.queryCddz(getUserId(request), jsonObject, false); + } /** * 保存or更新神经心理项目 * diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java index 48a2114..5c63b59 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyEvaluationCriterionService.java @@ -23,6 +23,7 @@ public interface BabyEvaluationCriterionService { * @return */ BaseResponse query(Integer userId, JSONObject jsonObject, boolean isPush); + BaseResponse queryCddz(Integer userId, JSONObject jsonObject, boolean isPush); /** * 保存or更新神经心理项目 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 adf2639..66d8f4c 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 @@ -18,14 +18,12 @@ import org.apache.commons.collections.map.HashedMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.aggregation.Aggregation; -import org.springframework.data.mongodb.core.aggregation.AggregationResults; -import org.springframework.data.mongodb.core.aggregation.GroupOperation; -import org.springframework.data.mongodb.core.aggregation.MatchOperation; +import org.springframework.data.mongodb.core.aggregation.*; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; +import scala.Int; import java.math.BigDecimal; import java.text.DecimalFormat; @@ -78,7 +76,56 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri baseResponse.setObject(stringObjectMap); return baseResponse; } + public BaseResponse getItemListByBabyIdCddz(String babyId, Integer checkMonth, String id) { + Map stringObjectMap = new HashMap<>(); + int [] months = null; + if (StringUtils.isNotEmpty(babyId)) { + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyId)), BabyModel.class); + if (null != babyModel) { + Date birth = babyModel.getBirth(); + Integer month = checkMonth == null ? DateUtil.getBabyAgeMonth(birth, new Date()) : checkMonth; + if (month > 84) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("操作失败,当前儿童年龄大于7岁"); + } + if (month > 0) + { + List intsCddz = getIntsCddz(3);//获取儿童测量评估标准 所有的月龄集合 + stringObjectMap = getListMapCddz(intsCddz, babyId, checkMonth, id); + } + } + } + BaseResponse baseResponse = new BaseResponse(); + baseResponse.setObject(stringObjectMap); + return baseResponse; + } + + /** + * 获取 儿童测量评估标准 所有的月龄集合 + * + * @param type 3/儿童神经心理发育 + * @Author: 武涛涛 + * @Date: 2021/4/15 15:01 + */ + private List getIntsCddz( Integer type) { + Criteria cm = Criteria.where("type").in(type).and("yn").ne(YnEnums.NO.getId()); + AggregationOperation matchM = Aggregation.match(cm); + AggregationOperation groupM = Aggregation.group("month");//.count().as("gwegllCount"); + AggregationOperation fieldsM = Aggregation.project("month"); + Aggregation aggregationM = Aggregation.newAggregation(matchM, groupM, fieldsM); + AggregationResults resultM = this.mongoTemplate.aggregate(aggregationM, + "lyms_baby_evaluationCriterion", HashMap.class);//BabyEvaluationCriterionModel HashMap + List integerList = new ArrayList <>(); + if (resultM != null && CollectionUtils.isNotEmpty(resultM.getMappedResults())) { + for (HashMap hashMap: resultM.getMappedResults() ) { + if(hashMap.containsKey("_id")){ + integerList.add((Integer) hashMap.get("_id")); + } + } + } + Collections.sort(integerList); + return integerList; + } private int[] getInts(int[] months, Integer month) { int month3 = getCurrentMonth(month, 3, 3); if (month3 >= 3 && month3 <= 72) { @@ -238,6 +285,91 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri resultMap.put("configs", mapList); return resultMap; } + /** + * 和以前的规则一样,只是这里是 List months + * + * @param months + * @param babyId + * @param checkMonth + * @param id + * @Author: 武涛涛 + * @Date: 2021/4/15 15:01 + */ + private Map getListMapCddz( List months, String babyId, Integer checkMonth, String id) { + Map resultMap = new HashMap<>(); + String neuroPsychologicalId = null; + + + // 当前本月的被勾选的总分数 + List> mapList = new LinkedList<>(); + for (int i = 0, size = months.size(); i < size ; i++) { + + int currentMonth = months.get(i); + // 月龄对应的数据 + Map objectMap = new HashMap<>(); + Query query = Query.query(Criteria.where("month").is(currentMonth).and("yn").is(YnEnums.YES.getId()).and("type").is(3)); + query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "month"))); + + List babyEvaluationCriterionModels = mongoTemplate.find(query, BabyEvaluationCriterionModel.class); + Map> listGroup = getListGroup(babyEvaluationCriterionModels); + List> listGroupMaps = new LinkedList<>(); + Set>> entries = listGroup.entrySet(); + for (Map.Entry> entry : entries) { + Map map = new HashMap<>(); + List models = entry.getValue(); + Iterator iterator = models.iterator(); + List> list = new LinkedList<>(); + while (iterator.hasNext()) { + BabyEvaluationCriterionModel next = iterator.next(); + final String configId = next.getId(); + boolean isSelected = false; + Double projectVal = next.getProjectVal(); + if (checkMonth != null) { + BabyNeuroPsychologicalModel one = mongoTemplate.findOne(Query.query( + Criteria.where("configId").in(new ArrayList(){{add(configId);}}). + and("_id").is(id)), BabyNeuroPsychologicalModel.class); + if (one != null) { + isSelected = true; + String oneId = one.getId(); + if (neuroPsychologicalId == null) { + neuroPsychologicalId = oneId; + } + } + } + Map m = new HashMap<>(16); + m.put("configId", configId); + m.put("projectName", next.getProjectName()); + m.put("projectVal", projectVal); + m.put("isSelected", isSelected); + list.add(m); + } + map.put("projectType", entry.getKey()); + map.put("detailList", list); + listGroupMaps.add(map); + } + + + // 当前测试时月龄 + objectMap.put("checkMonth", checkMonth); + // 配置对应的月龄 + objectMap.put("month", currentMonth); + // 领域组 + objectMap.put("listGroup", listGroupMaps); + + + // 当前检查时间 + BabyNeuroPsychologicalModel one = mongoTemplate.findOne(Query.query( + Criteria.where("babyId").is(babyId).and("yn").is(YnEnums.YES.getId()).and("checkMonth").is(checkMonth)), BabyNeuroPsychologicalModel.class); + String currentCheckTime = one == null + ? "" + : (one.getUpdateTime() == null ? DateUtil.getYmd(one.getCreateTime()) : DateUtil.getYmd(one.getUpdateTime())); + objectMap.put("currentCheckTime", currentCheckTime); + + mapList.add(objectMap); + } + resultMap.put("configs", mapList); + return resultMap; + } /** * @@ -449,6 +581,122 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri } /** + * 获取儿童神经心理发育检查项(承德环境) + * + * @param userId + * @param jsonObject + * @return + */ + @Override + public BaseResponse queryCddz(Integer userId, JSONObject jsonObject, boolean isPush) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + String babyId = jsonObject.getString("babyId"); + BaseResponse baseResponse = new BaseResponse(); + if (StringUtils.isEmpty(babyId)) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("参数缺失"); + } + List models = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyId).and("hospitalId").is(hospitalId).and("yn").is(YnEnums.YES.getId())). + with(new Sort(new Sort.Order(Sort.Direction.ASC, "createTime"))), BabyNeuroPsychologicalModel.class); + List objectList = new ArrayList<>(); + Integer checkMonth = null; + String checkMonthStr = ""; + + if (CollectionUtils.isNotEmpty(models)) { + + if (isPush){ + BabyNeuroPsychologicalModel model = models.get(models.size() - 1); + BaseResponse response = getItemListByBabyIdCddz(model.getBabyId(), model.getCheckMonth(), model.getId()); + return response; + } else { + // 若该儿童做过该项检查,一次查出 + for (BabyNeuroPsychologicalModel model : models) { + BaseResponse itemListByBabyId = getItemListByBabyIdCddz(model.getBabyId(), model.getCheckMonth(), model.getId()); + if (itemListByBabyId.getErrorcode() != 0) { + // 出错直接return + return itemListByBabyId; + } + Map objectMap = (Map) itemListByBabyId.getObject(); + objectMap.put("checkTimeStr", DateUtil.getyyyy_MM_dd(model.getCreateTime())); + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("id").is(babyId)), BabyModel.class); + if (babyModel != null) { + checkMonthStr = DateUtil.getBabyMonthAge(babyModel.getBirth(), model.getCreateTime()); + } + objectMap.put("checkMonth", checkMonthStr); + objectMap.put("id", model.getId()); + + // 发育商、智能、等级评价 + objectMap.put("developmentQuotient", model.getDevelopmentQuotient()); + objectMap.put("aptitudeName", model.getAptitudeName()); + objectMap.put("levelName", model.getLevelName()); + + // 智龄 + int double1Dq = 0, + double2Dq = 0, + double3Dq = 0, + double4Dq = 0, + double5Dq = 0; + Double double1Z = 0.00D, + double2Z = 0.00D, + double3Z = 0.00D, + double4Z = 0.00D, + double5Z = 0.00D; + Double zl = 0.00D; + + for (String configId : model.getConfigId()) { + BabyEvaluationCriterionModel criterionModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(configId)), BabyEvaluationCriterionModel.class); + zl += criterionModel.getProjectVal(); + // 1/大动作 2/精细动作 3/适应能力 4/语音 5/社交行为 + if (criterionModel != null) { + if (1 == criterionModel.getProjectType()) { + double1Z += criterionModel.getProjectVal(); + } else if (2 == criterionModel.getProjectType()) { + double2Z += criterionModel.getProjectVal(); + } else if (3 == criterionModel.getProjectType()) { + double3Z += criterionModel.getProjectVal(); + } else if (4 == criterionModel.getProjectType()) { + double4Z += criterionModel.getProjectVal(); + } else if (5 == criterionModel.getProjectType()) { + double5Z += criterionModel.getProjectVal(); + } + } + } + Integer month = model.getCheckMonth(); + int [] months = null; + months = getInts(months, month); + int month1 = months[0]; + List ecmodels = mongoTemplate.find(Query.query(Criteria.where("month").lt(month1).and("type").is(3)), BabyEvaluationCriterionModel.class); + for (BabyEvaluationCriterionModel m : ecmodels) { + zl += m.getProjectVal(); + } + + DecimalFormat df = new DecimalFormat("0.00"); + String zlStr = ""; + if (zl != 0.00) { + zlStr = String.format(df.format(zl / 5)); + } + Map reportMap = getStringObjectMap(DateUtil.getBabyAgeMonth(model.getBirth(), new Date() ), + double1Dq, double2Dq, double3Dq, double4Dq, double5Dq, double1Z, double2Z, double3Z, double4Z, double5Z); + + // 智龄、报表 + objectMap.put("zlStr", zlStr); + objectMap.put("report", reportMap); + objectList.add(objectMap); + } + } + } + + // 根据当前儿童显示项目领域的配置信息,以供 add + Map objectMap = (Map) getItemListByBabyIdCddz(babyId, checkMonth, null).getObject(); + objectMap.put("checkTimeStr", ""); + objectMap.put("checkMonth", checkMonthStr); + + objectList.add(objectMap); + baseResponse.setObject(objectList); + return baseResponse; + + } + + /** * 保存or更新神经心理项目 * * @param param