diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyNutritionFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyNutritionFacade.java index 1f48a40..cbc4399 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyNutritionFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyNutritionFacade.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.biz.dal.IFolicAcidDao; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.SexEnum; @@ -27,6 +28,7 @@ import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; +import scala.reflect.generic.Trees; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; @@ -1246,6 +1248,7 @@ public class BabyNutritionFacade { } public BaseObjectResponse queryBabyDietReport(String id, Integer userId) { + BaseObjectResponse objectResponse = new BaseObjectResponse(); Map data = new HashMap(); BabyNutritionQuery babyQuery = new BabyNutritionQuery(); @@ -1272,13 +1275,211 @@ public class BabyNutritionFacade { Organization org = organizationService.getOrganization(Integer.parseInt(hospitalId)); map.put("hospitalName", org.getName()); map.put("reportMonthAge", StringUtils.emptyDeal(DateUtil.getBabyMonthAge(baby.getBirth(), model.getNutritiTime()))); + + int month = DateUtil.getMonth(baby.getBirth(), model.getNutritiTime()); + System.out.println("月龄====" + month); + if (month > 36) { + return new BaseObjectResponse().setData(data).setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("月龄范围没有报告"); + } + //获取bmi值 + String bmi = patientWeightService.getBmi(String.valueOf(model.getWeight()), String.valueOf(model.getHeight())); + //获取是否 正常 消瘦 超重 + String kaupEvaluate = getBabyStatus(month, baby.getSex(), model.getHeight(), model.getWeight(), bmi); + + System.out.println("======体重范围" + kaupEvaluate); + if (kaupEvaluate.equals("正常") && month >= 0 && month <= 5) { + if (StringUtils.isNotEmpty(model.getFeedType())) { + BabyDietReportModel babyDietReport = mongoTemplate.findOne(Query.query(Criteria.where("monthAge").is(month).and("feedingPattern").is(Integer.valueOf(model.getFeedType())).and("shape").is(1)), BabyDietReportModel.class); + data.put("feedingPattern", babyDietReport.getFeedingGuide()); + } + } else if (kaupEvaluate.equals("正常") && month >= 6 && month <= 11) { + List babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("monthAge").is(month).and("shape").is(1)), BabyDietReportModel.class); + for (BabyDietReportModel babyDiet : babyDietReportList) { + if (month == 6) { + if (StringUtils.isNotEmpty(model.getFeedType())) { + if (Integer.valueOf(model.getFeedType()) == month) { + data.put("feedingPattern", babyDiet.getFeedingPattern()); + } + } else { + //直接返回空 + data.put("feedingPattern", ""); + } + } else { + data.put("feedingPattern", babyDiet.getFeedingPattern()); + } + //膳食结构 + data.put("dietStructure", babyDiet.getDietStructure()); + //一周喂养参考 + data.put("feedingWeek", babyDiet.getOneDayRecipes()); + //推荐食谱 + data.put("recommendRecipes", babyDiet.getRecommendRecipes()); + } + } else if (kaupEvaluate.equals("正常") && month >= 12 && month <= 36) { + List babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class); + System.out.println(babyDietReportList.size()); + for (BabyDietReportModel babyDiet : babyDietReportList) { + // 1代表正常 + if (null != babyDiet.getShape() && babyDiet.getShape() == 1) { + //膳食结构 + data.put("dietStructure", babyDiet.getDietStructure()); + //一周喂养参考 + data.put("monday", babyDiet.getMonday()); + data.put("tuesday", babyDiet.getTuesday()); + data.put("wednesday", babyDiet.getWednesday()); + data.put("thursday", babyDiet.getThursday()); + data.put("friday", babyDiet.getFriday()); + data.put("saturday", babyDiet.getSaturday()); + data.put("sunday", babyDiet.getSunday()); + //推荐食谱 + data.put("recommendRecipes", babyDiet.getRecommendRecipes()); + } + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) { + //喂养指南 + data.put("feedingGuide", babyDiet.getFeedingGuide()); + } + } + } + //获取热量值 体重在正常范围内的不计算热量值 + double kaul = getKcal(month, model.getWeight(), model.getHeight(), baby.getSex(), kaupEvaluate); + map.put("kaul", kaul); data.put("userInfo", map); - } + if ((kaupEvaluate.equals("消瘦") || kaupEvaluate.equals("超重")) && month >= 6 && month <= 11) { + List babyDietReport = mongoTemplate.find(Query.query(Criteria.where("monthAge").is(month)), BabyDietReportModel.class); + for (BabyDietReportModel babyDiet : babyDietReport) { + if (month == 6) { + if (StringUtils.isNotEmpty(model.getFeedType())) { + if (babyDiet.getFeedingPattern() == Integer.valueOf(model.getFeedType())) { + data.put("feedingGuide", babyDiet.getFeedingGuide()); + } + } + } else { + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) { + data.put("feedingGuide", babyDiet.getFeedingGuide()); + } + } + if (null != babyDiet.getKcal()) { + if ((babyDiet.getShape() == 0 || babyDiet.getShape() == 2) && babyDiet.getKcal() == kaul) { + data.put("dietStructure", babyDiet.getDietStructure()); + data.put("oneDayRecipes", babyDiet.getOneDayRecipes()); + data.put("recommendRecipes", babyDiet.getRecommendRecipes()); + } + } + } + } + if (month >= 12 && month <= 36) { + if (kaupEvaluate.equals("消瘦")) { + List babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class); + for (BabyDietReportModel babyDiet : babyDietReportList) { + if (null != babyDiet.getKcal() && null != babyDiet.getShape()) { + if (babyDiet.getShape() == 0 && kaul == babyDiet.getKcal()) { + data.put("dietStructure", babyDiet.getDietStructure()); + data.put("oneDayRecipes", babyDiet.getOneDayRecipes()); + data.put("recommendRecipes", babyDiet.getRecommendRecipes()); + } + } + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) { + data.put("feedingGuide", babyDiet.getFeedingGuide()); + } + } - BaseObjectResponse objectResponse = new BaseObjectResponse(); + } else if (kaupEvaluate.equals("超重")) { + List babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class); + for (BabyDietReportModel babyDiet : babyDietReportList) { + if (null != babyDiet.getKcal() && null != babyDiet.getShape()) { + if (babyDiet.getShape() == 2 && kaul == babyDiet.getKcal()) { + data.put("dietStructure", babyDiet.getDietStructure()); + data.put("oneDayRecipes", babyDiet.getOneDayRecipes()); + data.put("recommendRecipes", babyDiet.getRecommendRecipes()); + } + } + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) { + data.put("feedingGuide", babyDiet.getFeedingGuide()); + } + } + } + } + + } objectResponse.setData(data); objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); objectResponse.setErrormsg("成功"); return objectResponse; } + + //秦皇岛精简版算法 + private double getKcal(int month, Double weight, Double height, int sex, String kaupEvaluate) { + double kaul = getBasicKaul(month, weight, height, sex); + if (month < 12) { + kaul = getMathAbs(kaul); + if (kaul < 400) { + kaul = 400; + } else if (kaul > 1000) { + kaul = 1000; + } + + } else if (month < 36) { + kaul = getRounding(kaul); + + if (kaul < 500 && "消瘦".equals(kaupEvaluate)) { + kaul = 500; + } else if (kaul > 1000 && "消瘦".equals(kaupEvaluate)) { + kaul = 1000; + } else if (kaul < 950 && "超重".equals(kaupEvaluate)) { + kaul = 800; + } else if (kaul > 1700 && "超重".equals(kaupEvaluate)) { + kaul = 1700; + } + } else if (month == 36) { + kaul = getRounding(kaul); + if (kaul < 1200 && "消瘦".equals(kaupEvaluate)) { + kaul = 1200; + } else if (kaul > 1400 && "消瘦".equals(kaupEvaluate)) { + kaul = 1400; + } else if (kaul < 1500 && "超重".equals(kaupEvaluate)) { + kaul = 1500; + } else if (kaul > 1800 && "超重".equals(kaupEvaluate)) { + kaul = 1800; + } + } + + return kaul; + + } + + // 25 为分割 + public Double getRounding(Double number) { + if (number / 10 % 10 >= 5) { + if (number / 10 % 10 >= 7 && number % 10 >= 5) { + double g = 0; //s % 10; + double sw = 0;//s / 10 % 10; + double b = number / 100 % 10 + 1; + double q = number / 1000 % 10; + double num = q * 1000 + b * 100 + sw * 0 + g * 0; + return num; + } else { + double g = 0; //s % 10; + double sw = 5;//s / 10 % 10; + double b = number / 100 % 10; + double q = number / 1000 % 10; + double num = q * 1000 + b * 100 + sw * 10 + g * 0; + return num; + } + } else { + if (number / 10 % 10 >= 2 && number % 10 >= 5) { + double g = 0; //s % 10; + double sw = 5;//s / 10 % 10; + double b = number / 100 % 10; + double q = number / 1000 % 10; + double num = q * 1000 + b * 100 + sw * 10 + g * 0; + return num; + } else { + double g = 0; //s % 10; + double sw = 0;//s / 10 % 10; + double b = number / 100 % 10; + double q = number / 1000 % 10; + double num = q * 1000 + b * 100 + sw * 0 + g * 0; + return num; + } + } + } } \ No newline at end of file