heaterUsageController.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const pool = require('../config/db');
  2. const logger = require('../logger');
  3. module.exports = {
  4. getUsageData: async (req, res) => {
  5. const { range } = req.query;
  6. logger.info(`获取电暖器使用数据请求: 时间范围=${range}`);
  7. try {
  8. let query = `
  9. SELECT r.room_name, SUM(h.duration) AS duration, h.date
  10. FROM heater_usage h
  11. JOIN rooms r ON h.room_id = r.id
  12. `;
  13. if (range === 'week') {
  14. logger.debug('按周统计电暖器使用数据');
  15. query += ` GROUP BY YEARWEEK(h.date, 1), h.room_id`;
  16. } else if (range === 'month') {
  17. logger.debug('按月统计电暖器使用数据');
  18. query += ` GROUP BY YEAR(h.date), MONTH(h.date), h.room_id`;
  19. } else {
  20. logger.debug('按天统计电暖器使用数据');
  21. query += ` GROUP BY h.date, h.room_id`;
  22. }
  23. const [results] = await pool.promise().query(query);
  24. logger.info(`成功获取电暖器使用数据,记录数: ${results.length}`);
  25. res.json(results);
  26. } catch (error) {
  27. logger.error(`获取电暖器使用数据失败: ${error}`);
  28. res.status(500).send('获取数据失败');
  29. }
  30. }
  31. };