Commit 8da7840dd8a53236465399afe85385e0cda54668
1 parent
8032d5fff3
Exists in
master
and in
6 other branches
儿童膳食报告接口
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 | } |