diff --git a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBO.java b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBO.java index 5bb8864..247f8ae 100644 --- a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBO.java +++ b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBO.java @@ -13,6 +13,8 @@ public interface M_Bf_growthBO { public abstract DataMap select_bf_growth_rest_baseday(DataMap paramMap) throws Exception; public abstract DataMap select_bf_growth_vac_baseday(DataMap paramMap) throws Exception; public abstract DataMap select_bf_growth_vac_by_label(DataMap paramMap) throws Exception; + public abstract List select_bf_health_checkup_list(DataMap paramMap) throws Exception; + public abstract List select_bf_vac_schedule_list(DataMap paramMap) throws Exception; public abstract List select_bf_growth_sleep_statistics(DataMap paramMap) throws Exception; public abstract List select_bf_growth_sleep_list(DataMap paramMap) throws Exception; diff --git a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBOImpl.java b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBOImpl.java index df8b834..64235f3 100644 --- a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBOImpl.java +++ b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthBOImpl.java @@ -119,4 +119,22 @@ public class M_Bf_growthBOImpl extends AbstractBOManager implements M_Bf_growthB } catch (SQLException e) { throw e; } return lm; } + + public List select_bf_health_checkup_list(DataMap paramMap) throws Exception{ + List lm = null; + try { + generalDAO.setNamespace(SQLMAP_NAMESPACE); + lm = generalDAO.select_to_list("select_bf_health_checkup_list", paramMap); + } catch (SQLException e) { throw e; } + return lm; + } + public List select_bf_vac_schedule_list(DataMap paramMap) throws Exception{ + List lm = null; + try { + generalDAO.setNamespace(SQLMAP_NAMESPACE); + lm = generalDAO.select_to_list("select_bf_vac_schedule_list", paramMap); + } catch (SQLException e) { throw e; } + return lm; + } + } diff --git a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthController.java b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthController.java index 3048315..5cc50fe 100644 --- a/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthController.java +++ b/src/main/java/com/backoffice/m/bf_growth/M_Bf_growthController.java @@ -576,6 +576,61 @@ public class M_Bf_growthController extends AbstractControllerManager{ } + @RequestMapping(value="health_checkup") + public String health_checkup(@ModelAttribute("model") ModelMap model, HttpServletRequest request, HttpServletResponse response + , RedirectAttributes ra) { + DataMap paramMap = gmUtil.getDataMapFromRequest(request); + + String redirect_url = "m/bf_growth/health_checkup"; + + try { + boolean is_login = gmUtil.setSessionForMobileMember(request, paramMap); + if(is_login == false) { + ra.addFlashAttribute("call_native_login", "Y"); + redirect_url = "redirect:/m/login/view_login.do"; + }else{ + DataMap rm_child = init_child(model, request, paramMap); + paramMap.put("smc_no", rm_child.get("smc_no")); + List lm_health_checkup = bf_growthBO.select_bf_health_checkup_list(paramMap); //smc_no + DataMap.putToModel(model, "rm_child", rm_child); + DataMap.putToModel(model, "rm_health_checkup", lm_health_checkup); + } + }catch(Exception ex1){ redirect_url = gmUtil.redirectError(true, ex1, request, paramMap, ra, ""); ex1.printStackTrace();} + + gmUtil.redirectParam(model, paramMap); + + return redirect_url; + + } + + @RequestMapping(value="vac_schedule") + public String vac_schedule(@ModelAttribute("model") ModelMap model, HttpServletRequest request, HttpServletResponse response + , RedirectAttributes ra) { + DataMap paramMap = gmUtil.getDataMapFromRequest(request); + + String redirect_url = "m/bf_growth/vac_schedule"; + + try { + boolean is_login = gmUtil.setSessionForMobileMember(request, paramMap); + if(is_login == false) { + ra.addFlashAttribute("call_native_login", "Y"); + redirect_url = "redirect:/m/login/view_login.do"; + }else{ + DataMap rm_child = init_child(model, request, paramMap); + paramMap.put("smc_no", rm_child.get("smc_no")); + List lm_vac_schedule = bf_growthBO.select_bf_vac_schedule_list(paramMap); //smc_no + DataMap.putToModel(model, "rm_child", rm_child); + DataMap.putToModel(model, "rm_vac_schedule", lm_vac_schedule); + + } + }catch(Exception ex1){ redirect_url = gmUtil.redirectError(true, ex1, request, paramMap, ra, ""); ex1.printStackTrace();} + + gmUtil.redirectParam(model, paramMap); + + return redirect_url; + + } + @RequestMapping(value="list_rest") public String list_rest(@ModelAttribute("model") ModelMap model, HttpServletRequest request, HttpServletResponse response , RedirectAttributes ra) { diff --git a/src/main/java/com/backoffice/m/bf_growth_body/M_Bf_growth_bodyBOImpl.java b/src/main/java/com/backoffice/m/bf_growth_body/M_Bf_growth_bodyBOImpl.java index 43db634..a327877 100644 --- a/src/main/java/com/backoffice/m/bf_growth_body/M_Bf_growth_bodyBOImpl.java +++ b/src/main/java/com/backoffice/m/bf_growth_body/M_Bf_growth_bodyBOImpl.java @@ -204,5 +204,6 @@ public class M_Bf_growth_bodyBOImpl extends AbstractBOManager implements M_Bf_gr return lm; } + } diff --git a/src/main/resources/sqlmap/m/bf_growth/com.backoffice.m.bf_growth.xml b/src/main/resources/sqlmap/m/bf_growth/com.backoffice.m.bf_growth.xml index 7e26ac3..17d2b29 100644 --- a/src/main/resources/sqlmap/m/bf_growth/com.backoffice.m.bf_growth.xml +++ b/src/main/resources/sqlmap/m/bf_growth/com.backoffice.m.bf_growth.xml @@ -353,4 +353,36 @@ LEFT JOIN tbl_bf_daily_nutrition_7 dn7 ON dn7.db_dvs_no = x.dvs_no AND dn7.smc_no=#smc_no# LEFT JOIN tbl_bf_daily_nutrition dn ON dn.dn_no = dn7.dn_no + + + + + diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_food/view_sn_nutrition_main_1.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_food/view_sn_nutrition_main_1.ftl index 8b6fba1..4bf7b40 100644 --- a/src/main/webapp/WEB-INF/views/ftl/m/bf_food/view_sn_nutrition_main_1.ftl +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_food/view_sn_nutrition_main_1.ftl @@ -43,7 +43,49 @@
- + +
+
+ <#if model['weekly']?has_content> + <#list model['weekly']! as item> +

+ ${item['reg_dt']!} + 주간 영양섭취 권장량 대비 +

+

+ N SCORE + ${item['totalNutrition']!} / 100점 +

+ <#break> + + +
+ +
+ +
+
+
+
+ <#if model['monthly']?has_content> + <#list model['monthly']! as item> +

+ ${item['reg_dt']!} + 월간 영양섭취 권장량 대비 +

+

+ N SCORE + ${item['totalNutrition']!} / 100점 +

+ <#break> + + +
+ +
+ +
+
@@ -86,7 +128,32 @@ prevEl: '.swiper-button-prev', // 이번 버튼 클래스명 } }); - + + // 차트 swiper 슬라이더 + new Swiper('.swiper-container2-chart', { + + + slidesPerView: 1, // 동시에 보여줄 슬라이드 갯수 + slidesPerGroup: 1, // 그룹으로 묶을 수 + + spaceBetween: 50, + + // 그룹수가 맞지 않을 경우 빈칸으로 메우기 + // 3개가 나와야 되는데 1개만 있다면 2개는 빈칸으로 채워서 3개를 만듬 + loopFillGroupWithBlank: true, + + loop: false, // 무한 반복 + + pagination: { // 페이징 + el: '.swiper-pagination', + clickable: true, // 페이징을 클릭하면 해당 영역으로 이동, 필요시 지정해 줘야 기능 작동 + }, + navigation: { // 네비게이션 + nextEl: '.swiper-button-next', // 다음 버튼 클래스명 + prevEl: '.swiper-button-prev', // 이번 버튼 클래스명 + }, + }); + /* 그래프 myChart1 */ var ctx = document.getElementById("myChart1"); var myChart = new Chart(ctx, { @@ -212,4 +279,256 @@ }, //옵션 }); + /* 그래프 myChart2 */ + var ctx = document.getElementById("myChart2"); + var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: [ + <#if model['weekly']?has_content> + <#list model['weekly']?reverse as item> + "${item['reg_dt']!}", + + + + ], + datasets: [{ + data: [ + <#if model['weekly']?has_content> + <#list model['weekly']?reverse as item> + "${item['totalNutrition']!}", + + + ], + backgroundColor: 'rgba(255,255,255,0)', + borderColor: '#e7e7e7', + cubicInterpolationMode: true, + pointRadius: '5', + pointBackgroundColor: ['#fff', '#fff', '#fff', '#fff'], + pointBorderWidth: '3', + pointBorderColor: ['#33CC33', '#33CC33', '#33CC33', '#33CC33'], + borderWidth: '3', + lineTension: 0, + /*pointHoverBorderColor: "#30a9d7",*/ + /*pointHoverBackgroundColor: "#30a9d7",*/ + }, ] + }, + options: { + + maintainAspectRatio: false, + legend: { + display: false, + labels: { + fontColor: '#fff' + } + }, + layout: { + padding: { + left: 0, + right: 0, + top: 10, + bottom: 0 + }, + }, + scales: { + yAxes: [{ + display: true, + gridLines: { + offsetGridLines: false, + color: '#ddd', + drawBorder: true, + drawTicks: true, + drawOnChartArea: false, + tickMarkLength: 3, + }, + scaleLabel: { + display: true, + labelString: '영양점수' + + }, //왼쪽 라벨 + ticks: { + padding: 5, + fontColor: '#252525', + fontSize: '11', + min: 0, + max: 100, + stepSize: 20, + } + }], + xAxes: [{ + display: true, + gridLines: { + color: ['#ddd', '#f2f2f2', '#f2f2f2', '#f2f2f2', '#f2f2f2', '#ddd'], + drawTicks: true, + drawBorder: true, + tickMarkLength: 3, + }, + scaleLabel: { + display: true, + labelString: '주간' + }, + ticks: { + padding: 5, + fontColor: '#252525', + fontSize: '11', + } + }] + }, + tooltips: { //툴팁 + callbacks: { + label: function(tooltipItem, data) { + + var label = data.datasets[tooltipItem.datasetIndex].label || ''; + + if (label) { + label += ' N SCORE : '; + } + label += Math.round(tooltipItem.yLabel * 100) / 100; + return label + " 점"; + } + }, + enabled: 'true', + intersect: false, + displayColors: false, + backgroundColor: '#FF8135', + yPadding: 15, + xPadding: 10, + titleFontSize: 15, + titleFontColor: '#fff', + titleFontFamily: 'Noto Sans KR', + bodyFontSize: 15, + bodyFontColor: '#fff', + bodyFontFamily: 'Noto Sans KR', + caretPadding: 5, + cornerRadius: 10, + caretSize: 5, + } + }, //옵션 + }); + + /* 그래프 myChart3 */ + var ctx = document.getElementById("myChart3"); + var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: [ + <#if model['monthly']?has_content> + <#list model['monthly']?reverse as item> + "${item['reg_dt']!}", + + + ], + datasets: [{ + data: [ + <#if model['monthly']?has_content> + <#list model['monthly']?reverse as item> + "${item['totalNutrition']!}", + + + ], + backgroundColor: 'rgba(255,255,255,0)', + borderColor: '#e7e7e7', + cubicInterpolationMode: true, + pointRadius: '5', + pointBackgroundColor: ['#fff', '#fff', '#fff', '#fff', '#fff'], + pointBorderWidth: '3', + pointBorderColor: ['#33CC33', '#33CC33', '#33CC33', '#33CC33'], + borderWidth: '3', + lineTension: 0, + /*pointHoverBorderColor: "#30a9d7",*/ + /*pointHoverBackgroundColor: "#30a9d7",*/ + }, ] + }, + options: { + + maintainAspectRatio: false, + legend: { + display: false, + labels: { + fontColor: '#fff' + } + }, + layout: { + padding: { + left: 0, + right: 0, + top: 10, + bottom: 0 + }, + }, + scales: { + yAxes: [{ + display: true, + gridLines: { + offsetGridLines: false, + color: '#ddd', + drawBorder: true, + drawTicks: true, + drawOnChartArea: false, + tickMarkLength: 3, + }, + scaleLabel: { + display: true, + labelString: '영양점수' + + }, //왼쪽 라벨 + ticks: { + padding: 5, + fontColor: '#252525', + fontSize: '11', + min: 0, + max: 100, + stepSize: 20, + } + }], + xAxes: [{ + display: true, + gridLines: { + color: ['#ddd', '#f2f2f2', '#f2f2f2', '#f2f2f2', '#f2f2f2', '#ddd'], + drawTicks: true, + drawBorder: true, + tickMarkLength: 3, + }, + scaleLabel: { + display: true, + labelString: '월간' + }, + ticks: { + padding: 5, + fontColor: '#252525', + fontSize: '11', + } + }] + }, + tooltips: { //툴팁 + callbacks: { + label: function(tooltipItem, data) { + + var label = data.datasets[tooltipItem.datasetIndex].label || ''; + + if (label) { + label += ' N SCORE : '; + } + label += Math.round(tooltipItem.yLabel * 100) / 100; + return label + " 점"; + } + }, + enabled: 'true', + intersect: false, + displayColors: false, + backgroundColor: '#FF8135', + yPadding: 15, + xPadding: 10, + titleFontSize: 15, + titleFontColor: '#fff', + titleFontFamily: 'Noto Sans KR', + bodyFontSize: 15, + bodyFontColor: '#fff', + bodyFontFamily: 'Noto Sans KR', + caretPadding: 5, + cornerRadius: 10, + caretSize: 5, + } + }, //옵션 + }); diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/food_balance.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/food_balance.ftl index 80c20bc..cbeaa27 100644 --- a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/food_balance.ftl +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/food_balance.ftl @@ -33,15 +33,35 @@
- +
diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/growth_balance.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/growth_balance.ftl index af869d7..48ee3d4 100644 --- a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/growth_balance.ftl +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/growth_balance.ftl @@ -32,15 +32,35 @@
- +
    diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/health_checkup.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/health_checkup.ftl new file mode 100644 index 0000000..3b3afe3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/health_checkup.ftl @@ -0,0 +1,98 @@ +<#include "/m/include/index_top.ftl"> + + + + + + + + + + + + + +
    + + +
    + +

    분석

    +
    +
    +
    + + + +
    + +
    + + + + +
    + <#if model['rm_health_checkup']? has_content> + <#list model['rm_health_checkup'] as item> +
    + +
    ${item['recmnd_month']!}
    + +
    +
    ${item['degree']!} ${item['title']!} (생후 ${item['from_dt']!} ~ ${item['to_dt']!}일)
    +
    +
    검진 항목
    +
    ${item['checkup_contents']!}
    +
    +
    +
    권장일
    +
    ${item['recmnd_from_dt']!}~${item['recmnd_to_dt']!}
    +
    +
    +
    + + +
    +
    +
    +
    +
+ + + +<#include "/m/include/index_bottom_menu.ftl"> + + +<#include "/m/bf_coach/include_return_url.ftl"> + + + +<#include "/m/include/index_bottom.ftl"> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/nutrient_balance.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/nutrient_balance.ftl index 29cc538..ed514d6 100644 --- a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/nutrient_balance.ftl +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/nutrient_balance.ftl @@ -32,17 +32,35 @@
- - - +
diff --git a/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/vac_schedule.ftl b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/vac_schedule.ftl new file mode 100644 index 0000000..2da39a5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ftl/m/bf_growth/vac_schedule.ftl @@ -0,0 +1,95 @@ +<#include "/m/include/index_top.ftl"> + + + + + + + + + + + + + +
+ + +
+ +

분석

+
+
+
+ + + +
+ +
+ + + + +
+ + <#if model['rm_vac_schedule']? has_content> + <#list model['rm_vac_schedule'] as item> +
+ +
${item['recmnd_month']!}
+ +
+
${item['dv_disease']!}
+
+
권장일
+
${item['recmnd_from_dt']!}~${item['recmnd_to_dt']!}
+
+
+
+ + +
+
+
+
+
+ + + +<#include "/m/include/index_bottom_menu.ftl"> + + +<#include "/m/bf_coach/include_return_url.ftl"> + + + +<#include "/m/include/index_bottom.ftl"> \ No newline at end of file