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 | } |