diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/BabyNeuroPsychologicalModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/BabyNeuroPsychologicalModel.java index 3de456f..c0cda06 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/BabyNeuroPsychologicalModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/BabyNeuroPsychologicalModel.java @@ -22,6 +22,29 @@ public class BabyNeuroPsychologicalModel extends BaseModel { private String babyId; + private String mphone; + + private String mcertNo; + + private Integer gender; + + private Date birth; + + /** + * 发育商 + */ + private Integer developmentQuotient; + + /** + * 智能 + */ + private String aptitudeName; + + /** + * 等级评价 + */ + private String levelName; + private List configId; private String hospitalId; @@ -40,6 +63,62 @@ public class BabyNeuroPsychologicalModel extends BaseModel { private Integer yn; + public String getMphone() { + return mphone; + } + + public void setMphone(String mphone) { + this.mphone = mphone; + } + + public String getMcertNo() { + return mcertNo; + } + + public void setMcertNo(String mcertNo) { + this.mcertNo = mcertNo; + } + + public Integer getGender() { + return gender; + } + + public void setGender(Integer gender) { + this.gender = gender; + } + + public Date getBirth() { + return birth; + } + + public void setBirth(Date birth) { + this.birth = birth; + } + + public Integer getDevelopmentQuotient() { + return developmentQuotient; + } + + public void setDevelopmentQuotient(Integer developmentQuotient) { + this.developmentQuotient = developmentQuotient; + } + + public String getAptitudeName() { + return aptitudeName; + } + + public void setAptitudeName(String aptitudeName) { + this.aptitudeName = aptitudeName; + } + + public String getLevelName() { + return levelName; + } + + public void setLevelName(String levelName) { + this.levelName = levelName; + } + public Integer getCheckMonth() { return checkMonth; } 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 f29cc06..f2e07c5 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 @@ -70,6 +70,19 @@ public class BabyEvaluationCriterionController extends BaseController { return babyEvaluationCriterionService.saveOrUpdateNeuropsychology(param, getUserId(request)); } + /** + * 神经心理项目--列表 + * + * @param param + * @param request + * @return + */ + @ResponseBody + @TokenRequired + @RequestMapping(method = RequestMethod.POST, value = "/list") + private BaseResponse neuropsychologylList(@RequestBody EvaluationCriterionNeuropsychologyListRequest param, HttpServletRequest request) { + return babyEvaluationCriterionService.neuropsychologylList(getUserId(request), param); + } /****************************************************20项神经运动筛查**********************************************/ diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/EvaluationCriterionNeuropsychologyListRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/EvaluationCriterionNeuropsychologyListRequest.java new file mode 100644 index 0000000..867eaeb --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/EvaluationCriterionNeuropsychologyListRequest.java @@ -0,0 +1,89 @@ +package com.lyms.platform.operate.web.request; + +import com.lyms.platform.common.dao.BaseQuery; + +import java.io.Serializable; + +/** + * + * @Author dongqin + * @Description + * @Date 14:27 2019/8/1 + */ +public class EvaluationCriterionNeuropsychologyListRequest extends BaseQuery implements Serializable { + + private String queryNo; + + private Integer checkMonth; + + /** + * 优秀\聪明\正常\偏低\低下 + */ + private String levelName; + + private String startCheckTime; + + private String endCheckTime; + + private String checkDoctor; + /** + * 是否加密 1|是 2|否 + */ + private String isEncrypt = "2"; + + public String getIsEncrypt() { + return isEncrypt; + } + + public void setIsEncrypt(String isEncrypt) { + this.isEncrypt = isEncrypt; + } + + public String getQueryNo() { + return queryNo; + } + + public void setQueryNo(String queryNo) { + this.queryNo = queryNo; + } + + public Integer getCheckMonth() { + return checkMonth; + } + + public void setCheckMonth(Integer checkMonth) { + this.checkMonth = checkMonth; + } + + public String getLevelName() { + return levelName; + } + + public void setLevelName(String levelName) { + this.levelName = levelName; + } + + public String getStartCheckTime() { + return startCheckTime; + } + + public void setStartCheckTime(String startCheckTime) { + this.startCheckTime = startCheckTime; + } + + public String getEndCheckTime() { + return endCheckTime; + } + + public void setEndCheckTime(String endCheckTime) { + this.endCheckTime = endCheckTime; + } + + public String getCheckDoctor() { + return checkDoctor; + } + + public void setCheckDoctor(String checkDoctor) { + this.checkDoctor = checkDoctor; + } +} 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 7731207..949d658 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 @@ -104,4 +104,13 @@ public interface BabyEvaluationCriterionService { * @return */ BaseResponse exerciseAppraisalList(Integer userId, ExerciseAppraisalListRequest param); + + /** + * 神经心理项目--列表 + * + * @param userId + * @param param + * @return + */ + BaseResponse neuropsychologylList(Integer userId, EvaluationCriterionNeuropsychologyListRequest param); } 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 3135b26..2809f33 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 @@ -159,7 +159,6 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri Integer mentalAge = 0; // 当前本月的被勾选的总分数 - Double currentProjectVal = 0D; List> mapList = new LinkedList<>(); for (int i = 0, size = months.length; i < size ; i++) { @@ -189,7 +188,6 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri and("babyId").is(babyId).and("yn").is(YnEnums.YES.getId()).and("checkMonth").is(checkMonth)), BabyNeuroPsychologicalModel.class); if (one != null) { isSelected = true; - currentProjectVal += projectVal; if (neuroPsychologicalId == null) { neuroPsychologicalId = one.getId(); } @@ -226,34 +224,6 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri mapList.add(objectMap); } - BigDecimal defOldVal = BigDecimal.ZERO; - if (checkMonth - 2 > 1) { - /*MatchOperation match = Aggregation.match(Criteria.where("")); - GroupOperation group = Aggregation.group(); - Aggregation aggregation = Aggregation.newAggregation(match, group); - AggregationResults aggregate = mongoTemplate.aggregate(aggregation, Map.class); - List mappedResults = aggregate.getMappedResults();*/ - //mongoTemplate.find(Query.query(Criteria.where().)) - } - int developmentQuotient = 0; - if (currentProjectVal > 0) { - mentalAge = new BigDecimal(currentProjectVal).divide(new BigDecimal(5), 0, BigDecimal.ROUND_HALF_UP).intValue(); - developmentQuotient = new BigDecimal(mentalAge).divide(new BigDecimal(checkMonth), 0, BigDecimal.ROUND_HALF_UP).intValue(); - developmentQuotient *= 100; - } - - // 发育商、智能、等级评价 - BabyEvaluationCriterionModel criterionModel = mongoTemplate.findOne(Query.query(Criteria.where("type").is(2). - and("minBorder").lte(developmentQuotient).and("maxBorder").gte(developmentQuotient)), BabyEvaluationCriterionModel.class); - String aptitudeName = null,levelName = null; - if (criterionModel != null) { - aptitudeName = criterionModel.getAptitudeName(); - levelName = criterionModel.getLevelName(); - } - resultMap.put("developmentQuotient", developmentQuotient); - resultMap.put("aptitudeName", aptitudeName); - resultMap.put("levelName", levelName); - resultMap.put("configs", mapList); return resultMap; } @@ -317,6 +287,12 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri } objectMap.put("checkMonth", checkMonthStr); objectMap.put("id", model.getId()); + + // 发育商、智能、等级评价 + objectMap.put("developmentQuotient", model.getDevelopmentQuotient()); + objectMap.put("aptitudeName", model.getAptitudeName()); + objectMap.put("levelName", model.getLevelName()); + objectList.add(objectMap); } @@ -354,9 +330,13 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri return new BaseResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg("儿童建档数据缺失"); } Integer checkMonth = DateUtil.getBabyAgeMonth(babyModel.getBirth(), new Date()); + paramModel.setGender(babyModel.getSex()); + paramModel.setBirth(babyModel.getBirth()); + paramModel.setMcertNo(babyModel.getMcertNo()); + paramModel.setMphone(babyModel.getMphone()); if (StringUtils.isNotEmpty(id)) { // 更新 - update(userId, configId, id); + update(userId, configId, id, paramModel); } else { Date dayFirstSecond = DateUtil.getDayFirstSecond(new Date()); Date dayLastSecond = DateUtil.getDayLastSecond(new Date()); @@ -365,7 +345,7 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri .gte(dayFirstSecond).lte(dayLastSecond).and("yn").is(YnEnums.YES.getId())), BabyNeuroPsychologicalModel.class); if (model != null) { // 更新 - update(userId, configId, model.getId()); + update(userId, configId, model.getId(), paramModel); } else { // 新增 paramModel.setHospitalId(hospitalId); @@ -380,16 +360,63 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri } /** + * 根据configId 计算智力商 + * @param paramModel + * @return + */ + private BabyNeuroPsychologicalModel getLevelByConfigId(BabyNeuroPsychologicalModel paramModel, Integer checkMonth) { + List configIds = paramModel.getConfigId(); + Double val = 0d; + for (String configId : configIds) { + BabyEvaluationCriterionModel evaluationCriterionModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(configId)), BabyEvaluationCriterionModel.class); + val += evaluationCriterionModel.getProjectVal(); + } + if (checkMonth - 2 >1){ + // 默认之前的全部通过 + Integer currentMonth = getCurrentMonth(checkMonth, 3, 3); + List modelList = mongoTemplate.find(Query.query(Criteria.where("month").gte(currentMonth).and("type").is(3)), BabyEvaluationCriterionModel.class); + for (BabyEvaluationCriterionModel model : modelList) { + val += model.getProjectVal(); + } + } + int developmentQuotient = 0; + if (val > 0) { + int mentalAge = new BigDecimal(val.toString()).divide(new BigDecimal(5), 0, BigDecimal.ROUND_HALF_UP).intValue(); + developmentQuotient = new BigDecimal(mentalAge).divide(new BigDecimal(checkMonth), 0, BigDecimal.ROUND_HALF_UP).intValue(); + developmentQuotient *= 100; + } + + // 发育商、智能、等级评价 + BabyEvaluationCriterionModel criterionModel = mongoTemplate.findOne(Query.query(Criteria.where("type").is(2). + and("minBorder").lte(developmentQuotient).and("maxBorder").gte(developmentQuotient)), BabyEvaluationCriterionModel.class); + String aptitudeName = null,levelName = null; + if (criterionModel != null) { + aptitudeName = criterionModel.getAptitudeName(); + levelName = criterionModel.getLevelName(); + } + paramModel.setDevelopmentQuotient(developmentQuotient); + paramModel.setAptitudeName(aptitudeName); + paramModel.setLevelName(levelName); + return paramModel; + } + + /** * 更新检查项 * * @param userId * @param configId * @param id */ - private void update(Integer userId, List configId, String id) { + private void update(Integer userId, List configId, String id, BabyNeuroPsychologicalModel paramModel) { + BabyNeuroPsychologicalModel model = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), BabyNeuroPsychologicalModel.class); + Integer checkMonth = model.getCheckMonth(); + paramModel = getLevelByConfigId(paramModel, checkMonth); Query query = Query.query(Criteria.where("_id").is(id)); Update update = new Update(); update.set("configId", configId); + update.set("developmentQuotient", paramModel.getDevelopmentQuotient()); + update.set("aptitudeName", paramModel.getAptitudeName()); + update.set("levelName", paramModel.getLevelName()); update.set("updateTime", new Date()); update.set("updateUser", userId.toString()); mongoTemplate.updateFirst(query, update, BabyNeuroPsychologicalModel.class); @@ -846,6 +873,78 @@ public class BabyEvaluationCriterionServiceImpl implements BabyEvaluationCriteri } /** + * 神经心理项目--列表 + * + * @param userId + * @param param + * @return + */ + @Override + public BaseResponse neuropsychologylList(Integer userId, EvaluationCriterionNeuropsychologyListRequest param) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + Query query = new Query(); + query.addCriteria(Criteria.where("yn").is(YnEnums.YES.getId()).and("hospitalId").is(hospitalId)); + + // 查询号 + String queryNo = param.getQueryNo(); + if (StringUtils.isNotEmpty(queryNo)) { + query.addCriteria(new Criteria().orOperator(Criteria.where("name").is(queryNo), Criteria.where("mphone").is(queryNo), Criteria.where("mcertNo").is(queryNo))); + } + + // 测量月龄 + Integer checkMonth = param.getCheckMonth(); + if (checkMonth != null && checkMonth != 0) { + query.addCriteria(Criteria.where("checkMonth").is(checkMonth)); + } + + // 智能等级 + String levelName = param.getLevelName(); + if (StringUtils.isNotEmpty(levelName)) { + query.addCriteria(Criteria.where("levelName").is(levelName)); + } + + // 测量日期 + String startCheckTime = param.getStartCheckTime(); + String endCheckTime = param.getEndCheckTime(); + if (StringUtils.isNotEmpty(startCheckTime) && StringUtils.isNotEmpty(endCheckTime)) { + Date start = DateUtil.parseYMDHMS(startCheckTime + " 00.00.00"); + Date endt = DateUtil.parseYMDHMS(endCheckTime + " 23.59.59"); + query.addCriteria(Criteria.where("createTime").gte(start).lte(endt)); + } + + // 测量人 + String checkDoctor = param.getCheckDoctor(); + if (StringUtils.isNotEmpty(checkDoctor)) { + query.addCriteria(Criteria.where("createUser").is(checkDoctor)); + } + + + long count = mongoTemplate.count(query, BabyNeuroPsychologicalModel.class); + param.mysqlBuild((int) count); + query.skip(param.getOffset()).limit(param.getLimit()); + query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "createTime"))); + + List models = mongoTemplate.find(query, BabyNeuroPsychologicalModel.class); + List> maps = new ArrayList<>(); + for (BabyNeuroPsychologicalModel model : models) { + Map map = BeanUtils.objectToStringMap(model); + map.put("age", model.getGender() == 0 ? "女" : model.getGender() == 1 ? "男" : "未知"); + map.put("birthStr", model.getBirth() != null ? DateUtil.getyyyy_MM_dd(model.getBirth()) : ""); + map.put("mcarNo", "1".equals(param.getIsEncrypt()) ? EncryptUtil.numberEncrypt(model.getMcertNo()) : model.getMcertNo()); + map.put("mphone", "1".equals(param.getIsEncrypt()) ? EncryptUtil.numberEncrypt(model.getMphone()) : model.getMphone()); + map.put("currentMonth", DateUtil.getBabyMonthAge(model.getBirth(), new Date())); + Users users = usersMapper.getUsers(Integer.parseInt(model.getCreateUser())); + map.put("checkDoctorStr",users == null ? "" : users.getName()); + map.remove("configId"); + maps.add(map); + } + BaseListResponse baseListResponse = new BaseListResponse(); + baseListResponse.setPageInfo(param.getPageInfo()); + baseListResponse.setData(maps); + return baseListResponse; + } + + /** * 参数效验 * * @param param