박정하 박정하 2023-06-29
230629 박정하 그래프 수정중
@8b647925705ff399b995046a762485972a364afa
Global.js
--- Global.js
+++ Global.js
@@ -5,10 +5,10 @@
 const SERVICE_STATUS = process.env.NODE_ENV;//development, production
 const PORT = 80;
 const API_SERVER_HOST = 'localhost:8080';
-const JUSO_API_KEY = 'U01TX0FVVEgyMDIzMDQxNzIxNDY1NjExMzY5NTg='//실사용 Key u-dolbom.com
-const JUSO_CORRD_API_KEY = 'U01TX0FVVEgyMDIzMDQxNzE2MTgyNzExMzY5MzE=';//실사용 Key u-dolbom.com
-//const JUSO_API_KEY = 'U01TX0FVVEgyMDIyMTEyMTE3NDE1NzExMzI0MjU=';//Test용
-//const JUSO_CORRD_API_KEY = 'U01TX0FVVEgyMDIyMTEyMTE4MDIxOTExMzI0MzU=';//Test용
+//const JUSO_API_KEY = 'U01TX0FVVEgyMDIzMDQxNzIxNDY1NjExMzY5NTg='//실사용 Key u-dolbom.com
+//const JUSO_CORRD_API_KEY = 'U01TX0FVVEgyMDIzMDQxNzE2MTgyNzExMzY5MzE=';//실사용 Key u-dolbom.com
+const JUSO_API_KEY = 'U01TX0FVVEgyMDIyMTEyMTE3NDE1NzExMzI0MjU=';//Test용
+const JUSO_CORRD_API_KEY = 'U01TX0FVVEgyMDIyMTEyMTE4MDIxOTExMzI0MzU=';//Test용
 
 module.exports = {
     PROJECT_NAME,
client/views/component/chart/Chart8_government.jsx
--- client/views/component/chart/Chart8_government.jsx
+++ client/views/component/chart/Chart8_government.jsx
@@ -6,10 +6,11 @@
 import CommonUtil from "../../../resources/js/CommonUtil";
 
 
-export default function Chart8() {
-  const createChart = () => {
-    let root = am5.Root.new("Chart8");
+export default function Chart8(chartData) {
+  console.log("chartData : ", chartData.data)
 
+  const createChart = (chartData) => {
+    let root = am5.Root.new("Chart8");
 
     // Set themes
     // https://www.amcharts.com/docs/v5/concepts/themes/
@@ -63,7 +64,7 @@
       xAxis: xAxis,
       yAxis: yAxis,
       valueXField: "percent",
-      categoryYField: "senior_name",
+      categoryYField: "user_name",
       tooltip: am5.Tooltip.new(root, {
         pointerOrientation: "left",
         labelText: "{valueX}"
@@ -89,20 +90,7 @@
 
 
     // Set data
-    let data = [
-      {
-        "senior_name": "보일",
-        "percent": 28
-      },
-      {
-        "senior_name": "보이",
-        "percent": 6
-      },
-      {
-        "senior_name": "보삼",
-        "percent": 16
-      },
-    ]
+    let data = chartData.data;
     yAxis.data.setAll(data);
     series.data.setAll(data);
     sortCategoryAxis();
@@ -172,7 +160,7 @@
   }
 
   React.useEffect(() => {
-    createChart();
+    createChart(chartData);
   }, [])
 
   return (
client/views/pages/main/Main_agency.jsx
--- client/views/pages/main/Main_agency.jsx
+++ client/views/pages/main/Main_agency.jsx
@@ -129,7 +129,7 @@
             <img src={medicineAgency} alt="" />
             <div className="text">
               <p>미복약 위험 대상자</p>
-              <p className="peoplecount">3</p>
+              <p className="peoplecount">0</p>
             </div>
           </li>
         </ul>
client/views/pages/main/Main_agencyAdmin.jsx
--- client/views/pages/main/Main_agencyAdmin.jsx
+++ client/views/pages/main/Main_agencyAdmin.jsx
@@ -253,7 +253,7 @@
             <li>
               <p><MedicationIcon sx={{ width: "50px", height: "50px", color: "#ffffff", background: "#076143", borderRadius: "50px" }} /></p>
               <p>{cityName} 미복약 위험 대상자</p>
-              <p>3</p>
+              <p>0</p>
             </li>
           </ul>
           <ul className="content-box statistics-govern" background="#ebe7b9" >
client/views/pages/main/Main_government.jsx
--- client/views/pages/main/Main_government.jsx
+++ client/views/pages/main/Main_government.jsx
@@ -20,6 +20,7 @@
 import MedicationIcon from '@mui/icons-material/Medication';
 import ElderlyIcon from '@mui/icons-material/Elderly';
 
+import CommonUtil from "../../../resources/js/CommonUtil.js";
 
 import "leaflet/dist/leaflet.css";
 
@@ -31,6 +32,7 @@
   const [cityName, setCityName] = useState(state.loginUser['government_name']);
 
   //대상자(시니어) 목록 조회
+  const [seniorNum, setSeniorNum] = React.useState();
   const [senior, setSenior] = React.useState({ userList: [], userListCount: 0 });
   const seniorSelectList = () => {
     fetch("/user/userSelectList.json", {
@@ -46,6 +48,11 @@
     }).then((response) => response.json()).then((data) => {
       console.log("대상자(시니어) 목록 조회 : ", data);
       setSenior(data);
+      data.userList.map((item, idx) => {
+        item['senior_id'] = item['user_id']
+        seniorMedicationSelectList(item);
+      })
+      console.log(medicationList)
     }).catch((error) => {
       console.log('seniorSelectList() /user/userSelectList.json error : ', error);
     });
@@ -169,6 +176,79 @@
     });
   }
 
+  //특정 대상자의 실제 복약 정보
+  const [seniorMedicationList, setSeniorMedicationList] = React.useState([]);
+  const [showMedicationTimeCode, setShowMedicationTimeCode] = React.useState({});
+  //특정 대상자의 실제 복약 정보 목록 조회
+  const seniorMedicationSelectList = (seniorData) => {
+    fetch("/user/seniorMedicationSelectList.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(seniorData),
+    }).then((response) => response.json()).then((data) => {
+      setSeniorMedicationList(data);
+      seniorMedicationSelectListByDay(data, seniorData);
+    }).catch((error) => {
+      console.log('seniorMedicationSelectList() /user/seniorMedicationSelectList.json error : ', error);
+    });
+  };
+
+  //특정 대상자의 일별, 복약시간별 복약 목록
+  const [medicationList, setMedicationList] = React.useState([]);
+  //특정 대상자의 일별, 복약시간별 복약 목록 조회
+  const seniorMedicationSelectListByDay = (seniorMedicationList, seniorData) => {
+    fetch("/user/seniorMedicationSelectListByDay.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(seniorData),
+    }).then((response) => response.json()).then((data) => {
+      let showMedicationTimeCode = {};
+      for (let i = 0; i < seniorMedicationList.length; i++) {
+        showMedicationTimeCode[seniorMedicationList[i]] = true;
+      }
+      setShowMedicationTimeCode(showMedicationTimeCode);
+
+      if (CommonUtil.isEmpty(data) == false) {
+        let _stackChartData = [];
+        let lenghs = 0;
+        if (data.length < 30) {
+          lenghs = data.length
+        } else {
+          lenghs = data.length - 30
+        }
+        let sum = 0;      // 실제 복약량
+        let counter = 0;  // 복약해야하는 양
+        let percent = 0;  // 복용률
+        for (let i = data.length - 1; i >= lenghs; i--) {
+          for (let j = 0; j < data[i]['medication_time_code_list'].length; j++) {
+            if (CommonUtil.isEmpty(showMedicationTimeCode[data[i]['medication_time_code_list'][j]]) == false) {
+              counter++;
+              if (i > 0) {
+                sum += data[i]['medication_time_code_count_list'][j];
+              }
+            } else {
+              continue;
+            }
+          }
+        }
+        if (sum == 0 || counter == 0) {
+          percent = 0
+        } else {
+          percent = Math.floor((sum / counter) * 100);
+        }
+        _stackChartData = { "user_name": seniorData['user_name'], "percent": percent }
+        setMedicationList(_stackChartData);
+      }
+    }).catch((error) => {
+      console.log('seniorMedicationSelectListByDay() /user/seniorMedicationSelectListByDay.json error : ', error);
+    });
+  };
+
+
   function updateList(agencyList, countList) {
 
     const result = [];
@@ -221,7 +301,7 @@
             <li>
               <p><MedicationIcon sx={{ width: "50px", height: "50px", color: "#ffffff", background: "#076143", borderRadius: "50px" }} /></p>
               <p>{cityName} 미복약 위험 대상자</p>
-              <p>5</p>
+              <p>0</p>
             </li>
           </ul>
           <ul className="content-box statistics-govern" background="#ebe7b9" >
@@ -283,7 +363,7 @@
             <Title title={`${cityName}  복용률 순위`} />
           </div>
           <div style={{ height: 'calc(100% - 60px)' }}>
-            <Chart8 />
+            <Chart8 data={medicationList} />
           </div>
         </div>
         <div className="content-box combine-left-government2">
server/modules/web/Server.js
--- server/modules/web/Server.js
+++ server/modules/web/Server.js
@@ -17,12 +17,12 @@
 
 http.createServer(webServer).listen(PORT);
 https.createServer({
-    key: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.com/u-dolbom.com_nopass.key`),
+    /* key: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.com/u-dolbom.com_nopass.key`),
     cert: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.com/u-dolbom.com.pem`),
-    ca: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.com/Chain_RootCA_Bundle.crt`),
-    /* key: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.co.kr/u-dolbom.co.kr_nopass.key`),
+    ca: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.com/Chain_RootCA_Bundle.crt`), */
+    key: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.co.kr/u-dolbom.co.kr_nopass.key`),
     cert: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.co.kr/u-dolbom.co.kr.pem`),
-    ca: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.co.kr/Chain_RootCA_Bundle.crt`), */
+    ca: fs.readFileSync(`${BASE_DIR}/server/modules/web/ssl/u-dolbom.co.kr/Chain_RootCA_Bundle.crt`),
     /* requestCert: false,
     rejectUnauthorized: false */
 }, webServer).listen(443);
Add a comment
List