Commit 8da7840dd8a53236465399afe85385e0cda54668

Authored by wangbo
1 parent 8032d5fff3

儿童膳食报告接口

Showing 1 changed file with 203 additions and 2 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyNutritionFacade.java View file @ 8da7840
1 1 package com.lyms.platform.operate.web.facade;
2 2  
  3 +import com.lyms.platform.biz.dal.IFolicAcidDao;
3 4 import com.lyms.platform.biz.service.*;
4 5 import com.lyms.platform.common.constants.ErrorCodeConstants;
5 6 import com.lyms.platform.common.enums.SexEnum;
... ... @@ -27,6 +28,7 @@
27 28 import org.springframework.data.mongodb.core.query.Criteria;
28 29 import org.springframework.data.mongodb.core.query.Query;
29 30 import org.springframework.stereotype.Component;
  31 +import scala.reflect.generic.Trees;
30 32  
31 33 import javax.servlet.http.HttpServletResponse;
32 34 import java.io.OutputStream;
... ... @@ -1246,6 +1248,7 @@
1246 1248 }
1247 1249  
1248 1250 public BaseObjectResponse queryBabyDietReport(String id, Integer userId) {
  1251 + BaseObjectResponse objectResponse = new BaseObjectResponse();
1249 1252 Map data = new HashMap();
1250 1253  
1251 1254 BabyNutritionQuery babyQuery = new BabyNutritionQuery();
1252 1255  
1253 1256  
1254 1257  
... ... @@ -1272,14 +1275,212 @@
1272 1275 Organization org = organizationService.getOrganization(Integer.parseInt(hospitalId));
1273 1276 map.put("hospitalName", org.getName());
1274 1277 map.put("reportMonthAge", StringUtils.emptyDeal(DateUtil.getBabyMonthAge(baby.getBirth(), model.getNutritiTime())));
  1278 +
  1279 + int month = DateUtil.getMonth(baby.getBirth(), model.getNutritiTime());
  1280 + System.out.println("月龄====" + month);
  1281 + if (month > 36) {
  1282 + return new BaseObjectResponse().setData(data).setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("月龄范围没有报告");
  1283 + }
  1284 + //获取bmi值
  1285 + String bmi = patientWeightService.getBmi(String.valueOf(model.getWeight()), String.valueOf(model.getHeight()));
  1286 + //获取是否 正常 消瘦 超重
  1287 + String kaupEvaluate = getBabyStatus(month, baby.getSex(), model.getHeight(), model.getWeight(), bmi);
  1288 +
  1289 + System.out.println("======体重范围" + kaupEvaluate);
  1290 + if (kaupEvaluate.equals("正常") && month >= 0 && month <= 5) {
  1291 + if (StringUtils.isNotEmpty(model.getFeedType())) {
  1292 + BabyDietReportModel babyDietReport = mongoTemplate.findOne(Query.query(Criteria.where("monthAge").is(month).and("feedingPattern").is(Integer.valueOf(model.getFeedType())).and("shape").is(1)), BabyDietReportModel.class);
  1293 + data.put("feedingPattern", babyDietReport.getFeedingGuide());
  1294 + }
  1295 + } else if (kaupEvaluate.equals("正常") && month >= 6 && month <= 11) {
  1296 + List<BabyDietReportModel> babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("monthAge").is(month).and("shape").is(1)), BabyDietReportModel.class);
  1297 + for (BabyDietReportModel babyDiet : babyDietReportList) {
  1298 + if (month == 6) {
  1299 + if (StringUtils.isNotEmpty(model.getFeedType())) {
  1300 + if (Integer.valueOf(model.getFeedType()) == month) {
  1301 + data.put("feedingPattern", babyDiet.getFeedingPattern());
  1302 + }
  1303 + } else {
  1304 + //直接返回空
  1305 + data.put("feedingPattern", "");
  1306 + }
  1307 + } else {
  1308 + data.put("feedingPattern", babyDiet.getFeedingPattern());
  1309 + }
  1310 + //膳食结构
  1311 + data.put("dietStructure", babyDiet.getDietStructure());
  1312 + //一周喂养参考
  1313 + data.put("feedingWeek", babyDiet.getOneDayRecipes());
  1314 + //推荐食谱
  1315 + data.put("recommendRecipes", babyDiet.getRecommendRecipes());
  1316 + }
  1317 + } else if (kaupEvaluate.equals("正常") && month >= 12 && month <= 36) {
  1318 + List<BabyDietReportModel> babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class);
  1319 + System.out.println(babyDietReportList.size());
  1320 + for (BabyDietReportModel babyDiet : babyDietReportList) {
  1321 + // 1代表正常
  1322 + if (null != babyDiet.getShape() && babyDiet.getShape() == 1) {
  1323 + //膳食结构
  1324 + data.put("dietStructure", babyDiet.getDietStructure());
  1325 + //一周喂养参考
  1326 + data.put("monday", babyDiet.getMonday());
  1327 + data.put("tuesday", babyDiet.getTuesday());
  1328 + data.put("wednesday", babyDiet.getWednesday());
  1329 + data.put("thursday", babyDiet.getThursday());
  1330 + data.put("friday", babyDiet.getFriday());
  1331 + data.put("saturday", babyDiet.getSaturday());
  1332 + data.put("sunday", babyDiet.getSunday());
  1333 + //推荐食谱
  1334 + data.put("recommendRecipes", babyDiet.getRecommendRecipes());
  1335 + }
  1336 + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) {
  1337 + //喂养指南
  1338 + data.put("feedingGuide", babyDiet.getFeedingGuide());
  1339 + }
  1340 + }
  1341 + }
  1342 + //获取热量值 体重在正常范围内的不计算热量值
  1343 + double kaul = getKcal(month, model.getWeight(), model.getHeight(), baby.getSex(), kaupEvaluate);
  1344 + map.put("kaul", kaul);
1275 1345 data.put("userInfo", map);
1276   - }
  1346 + if ((kaupEvaluate.equals("消瘦") || kaupEvaluate.equals("超重")) && month >= 6 && month <= 11) {
  1347 + List<BabyDietReportModel> babyDietReport = mongoTemplate.find(Query.query(Criteria.where("monthAge").is(month)), BabyDietReportModel.class);
  1348 + for (BabyDietReportModel babyDiet : babyDietReport) {
  1349 + if (month == 6) {
  1350 + if (StringUtils.isNotEmpty(model.getFeedType())) {
  1351 + if (babyDiet.getFeedingPattern() == Integer.valueOf(model.getFeedType())) {
  1352 + data.put("feedingGuide", babyDiet.getFeedingGuide());
  1353 + }
  1354 + }
  1355 + } else {
  1356 + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) {
  1357 + data.put("feedingGuide", babyDiet.getFeedingGuide());
  1358 + }
  1359 + }
  1360 + if (null != babyDiet.getKcal()) {
  1361 + if ((babyDiet.getShape() == 0 || babyDiet.getShape() == 2) && babyDiet.getKcal() == kaul) {
  1362 + data.put("dietStructure", babyDiet.getDietStructure());
  1363 + data.put("oneDayRecipes", babyDiet.getOneDayRecipes());
  1364 + data.put("recommendRecipes", babyDiet.getRecommendRecipes());
  1365 + }
  1366 + }
  1367 + }
  1368 + }
  1369 + if (month >= 12 && month <= 36) {
  1370 + if (kaupEvaluate.equals("消瘦")) {
  1371 + List<BabyDietReportModel> babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class);
  1372 + for (BabyDietReportModel babyDiet : babyDietReportList) {
  1373 + if (null != babyDiet.getKcal() && null != babyDiet.getShape()) {
  1374 + if (babyDiet.getShape() == 0 && kaul == babyDiet.getKcal()) {
  1375 + data.put("dietStructure", babyDiet.getDietStructure());
  1376 + data.put("oneDayRecipes", babyDiet.getOneDayRecipes());
  1377 + data.put("recommendRecipes", babyDiet.getRecommendRecipes());
  1378 + }
  1379 + }
  1380 + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) {
  1381 + data.put("feedingGuide", babyDiet.getFeedingGuide());
  1382 + }
  1383 + }
1277 1384  
1278   - BaseObjectResponse objectResponse = new BaseObjectResponse();
  1385 + } else if (kaupEvaluate.equals("超重")) {
  1386 + List<BabyDietReportModel> babyDietReportList = mongoTemplate.find(Query.query(Criteria.where("startMonthAge").lte(month).and("endMonthAge").gte(month)), BabyDietReportModel.class);
  1387 + for (BabyDietReportModel babyDiet : babyDietReportList) {
  1388 + if (null != babyDiet.getKcal() && null != babyDiet.getShape()) {
  1389 + if (babyDiet.getShape() == 2 && kaul == babyDiet.getKcal()) {
  1390 + data.put("dietStructure", babyDiet.getDietStructure());
  1391 + data.put("oneDayRecipes", babyDiet.getOneDayRecipes());
  1392 + data.put("recommendRecipes", babyDiet.getRecommendRecipes());
  1393 + }
  1394 + }
  1395 + if (CollectionUtils.isNotEmpty(babyDiet.getFeedingGuide())) {
  1396 + data.put("feedingGuide", babyDiet.getFeedingGuide());
  1397 + }
  1398 + }
  1399 + }
  1400 + }
  1401 +
  1402 + }
1279 1403 objectResponse.setData(data);
1280 1404 objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS);
1281 1405 objectResponse.setErrormsg("成功");
1282 1406 return objectResponse;
  1407 + }
  1408 +
  1409 + //秦皇岛精简版算法
  1410 + private double getKcal(int month, Double weight, Double height, int sex, String kaupEvaluate) {
  1411 + double kaul = getBasicKaul(month, weight, height, sex);
  1412 + if (month < 12) {
  1413 + kaul = getMathAbs(kaul);
  1414 + if (kaul < 400) {
  1415 + kaul = 400;
  1416 + } else if (kaul > 1000) {
  1417 + kaul = 1000;
  1418 + }
  1419 +
  1420 + } else if (month < 36) {
  1421 + kaul = getRounding(kaul);
  1422 +
  1423 + if (kaul < 500 && "消瘦".equals(kaupEvaluate)) {
  1424 + kaul = 500;
  1425 + } else if (kaul > 1000 && "消瘦".equals(kaupEvaluate)) {
  1426 + kaul = 1000;
  1427 + } else if (kaul < 950 && "超重".equals(kaupEvaluate)) {
  1428 + kaul = 800;
  1429 + } else if (kaul > 1700 && "超重".equals(kaupEvaluate)) {
  1430 + kaul = 1700;
  1431 + }
  1432 + } else if (month == 36) {
  1433 + kaul = getRounding(kaul);
  1434 + if (kaul < 1200 && "消瘦".equals(kaupEvaluate)) {
  1435 + kaul = 1200;
  1436 + } else if (kaul > 1400 && "消瘦".equals(kaupEvaluate)) {
  1437 + kaul = 1400;
  1438 + } else if (kaul < 1500 && "超重".equals(kaupEvaluate)) {
  1439 + kaul = 1500;
  1440 + } else if (kaul > 1800 && "超重".equals(kaupEvaluate)) {
  1441 + kaul = 1800;
  1442 + }
  1443 + }
  1444 +
  1445 + return kaul;
  1446 +
  1447 + }
  1448 +
  1449 + // 25 为分割
  1450 + public Double getRounding(Double number) {
  1451 + if (number / 10 % 10 >= 5) {
  1452 + if (number / 10 % 10 >= 7 && number % 10 >= 5) {
  1453 + double g = 0; //s % 10;
  1454 + double sw = 0;//s / 10 % 10;
  1455 + double b = number / 100 % 10 + 1;
  1456 + double q = number / 1000 % 10;
  1457 + double num = q * 1000 + b * 100 + sw * 0 + g * 0;
  1458 + return num;
  1459 + } else {
  1460 + double g = 0; //s % 10;
  1461 + double sw = 5;//s / 10 % 10;
  1462 + double b = number / 100 % 10;
  1463 + double q = number / 1000 % 10;
  1464 + double num = q * 1000 + b * 100 + sw * 10 + g * 0;
  1465 + return num;
  1466 + }
  1467 + } else {
  1468 + if (number / 10 % 10 >= 2 && number % 10 >= 5) {
  1469 + double g = 0; //s % 10;
  1470 + double sw = 5;//s / 10 % 10;
  1471 + double b = number / 100 % 10;
  1472 + double q = number / 1000 % 10;
  1473 + double num = q * 1000 + b * 100 + sw * 10 + g * 0;
  1474 + return num;
  1475 + } else {
  1476 + double g = 0; //s % 10;
  1477 + double sw = 0;//s / 10 % 10;
  1478 + double b = number / 100 % 10;
  1479 + double q = number / 1000 % 10;
  1480 + double num = q * 1000 + b * 100 + sw * 0 + g * 0;
  1481 + return num;
  1482 + }
  1483 + }
1283 1484 }
1284 1485 }