From 1496b80fdf5fcd00fa1b344176ae57c0f4dc2db4 Mon Sep 17 00:00:00 2001 From: Athif Date: Thu, 18 Dec 2025 13:37:47 +0700 Subject: [PATCH] Update Value Report. --- controllers/history_value.controller.js | 34 ++++++------- db/history_value.db.js | 7 +-- services/history_value.service.js | 66 ++++++++++++------------- 3 files changed, 52 insertions(+), 55 deletions(-) diff --git a/controllers/history_value.controller.js b/controllers/history_value.controller.js index d4299f5..ee68c69 100644 --- a/controllers/history_value.controller.js +++ b/controllers/history_value.controller.js @@ -57,27 +57,27 @@ class HistoryValueController { } } -static async getHistoryValueReportPivot(req, res) { - try { - const queryParams = req.query; + static async getHistoryValueReportPivot(req, res) { + try { + const queryParams = req.query; - const results = await HistoryValue.getHistoryValueReportPivot(queryParams); - const response = await setResponsePaging(queryParams, results, 'Data found'); + const results = await HistoryValue.getHistoryValueReportPivot(queryParams); + const response = await setResponsePaging(queryParams, results, 'Data found'); - if (results.column) { - response.columns = results.column; + if (results.column) { + response.columns = results.column; + } + + res.status(response.statusCode).json(response); + } catch (error) { + const statusCode = error.statusCode || 500; + res.status(statusCode).json({ + success: false, + statusCode, + message: error.message || 'Internal server error' + }); } - - res.status(response.statusCode).json(response); - } catch (error) { - const statusCode = error.statusCode || 500; - res.status(statusCode).json({ - success: false, - statusCode, - message: error.message || 'Internal server error' - }); } -} static async getHistoryValueTrendingPivot(req, res) { try { diff --git a/db/history_value.db.js b/db/history_value.db.js index ef55234..b610fb0 100644 --- a/db/history_value.db.js +++ b/db/history_value.db.js @@ -385,10 +385,7 @@ const getHistoryValueReportPivotDb = async (tableName, searchParams = {}) => { OPTION (MAXRECURSION 0); `; - const request = pool.request(); - request.timeout = 60000; // 60 detik - - const result = await request.query(queryText, [from, to, interval]); + const result = await pool.query(queryText, [from, to, interval]); if (result.recordsets && result.recordsets.length >= 2) { console.log('Sample averaging data:'); @@ -551,7 +548,7 @@ const getHistoryValueTrendingPivotDb = async (tableName, searchParams = {}) => { const tagList = Object.keys(rows[0]).filter(k => k !== timeKey); const nivoData = tagList.map(tag => ({ - name: tag, + id: tag, data: rows.map(row => ({ x: row[timeKey], y: row[tag] !== null ? Number(row[tag]) : null diff --git a/services/history_value.service.js b/services/history_value.service.js index 1913f41..2c13de2 100644 --- a/services/history_value.service.js +++ b/services/history_value.service.js @@ -64,41 +64,41 @@ class HistoryValue { } static async getHistoryValueReportPivot(param) { - try { - if (!param.plant_sub_section_id) { - throw new ErrorHandler(400, 'plant_sub_section_id is required'); + try { + if (!param.plant_sub_section_id) { + throw new ErrorHandler(400, 'plant_sub_section_id is required'); + } + if (!param.from || !param.to) { + throw new ErrorHandler(400, 'from and to date parameters are required'); + } + + const plantSubSection = await getSubSectionByIdDb(param.plant_sub_section_id); + + if (!plantSubSection || plantSubSection.length < 1) { + throw new ErrorHandler(404, 'Plant sub section not found'); + } + + const tableNameValue = plantSubSection[0]?.table_name_value; + + if (!tableNameValue) { + throw new ErrorHandler(404, 'Table name not configured for this sub section'); + } + + const tableExist = await checkTableNamedDb(tableNameValue); + + if (!tableExist || tableExist.length < 1) { + throw new ErrorHandler(404, `Value table '${tableNameValue}' not found`); + } + + const results = await getHistoryValueReportPivotDb(tableExist[0].TABLE_NAME, param); + return results; + } catch (error) { + throw new ErrorHandler( + error.statusCode || 500, + error.message || 'Error fetching history value report pivot' + ); } - if (!param.from || !param.to) { - throw new ErrorHandler(400, 'from and to date parameters are required'); - } - - const plantSubSection = await getSubSectionByIdDb(param.plant_sub_section_id); - - if (!plantSubSection || plantSubSection.length < 1) { - throw new ErrorHandler(404, 'Plant sub section not found'); - } - - const tableNameValue = plantSubSection[0]?.table_name_value; - - if (!tableNameValue) { - throw new ErrorHandler(404, 'Table name not configured for this sub section'); - } - - const tableExist = await checkTableNamedDb(tableNameValue); - - if (!tableExist || tableExist.length < 1) { - throw new ErrorHandler(404, `Value table '${tableNameValue}' not found`); - } - - const results = await getHistoryValueReportPivotDb(tableExist[0].TABLE_NAME, param); - return results; - } catch (error) { - throw new ErrorHandler( - error.statusCode || 500, - error.message || 'Error fetching history value report pivot' - ); } -} static async getHistoryValueTrendingPivot(param) { try {