From d2ab6f7153e604bac7bc4ad58f27f368b65d8a1e Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 16 六月 2026 13:54:58 +0800
Subject: [PATCH] feat: 添加能耗数据综合分析功能,支持按天和周维度的趋势分析

---
 src/main/java/com/ruoyi/http/controller/TqdianbiaoEleRecordController.java |   82 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 82 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/http/controller/TqdianbiaoEleRecordController.java b/src/main/java/com/ruoyi/http/controller/TqdianbiaoEleRecordController.java
new file mode 100644
index 0000000..4870802
--- /dev/null
+++ b/src/main/java/com/ruoyi/http/controller/TqdianbiaoEleRecordController.java
@@ -0,0 +1,82 @@
+package com.ruoyi.http.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.http.pojo.TqdianbiaoEleRecord;
+import com.ruoyi.http.service.TqdianbiaoEleRecordManageService;
+import com.ruoyi.http.service.TqdianbiaoEleSyncService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@Tag(name = "鐢甸噺璁板綍绠$悊")
+@RequestMapping("/tqdianbiao/eleRecord")
+@RequiredArgsConstructor
+public class TqdianbiaoEleRecordController extends BaseController {
+
+    private static final DateTimeFormatter HOUR_FMT = DateTimeFormatter.ofPattern("yyyyMMddHH");
+
+    private final TqdianbiaoEleRecordManageService eleRecordManageService;
+    private final TqdianbiaoEleSyncService eleSyncService;
+
+    @GetMapping("/listPage")
+    @Operation(summary = "鐢甸噺璁板綍-鍒嗛〉鏌ヨ")
+    public AjaxResult listPage(Page page, TqdianbiaoEleRecord query) {
+        return AjaxResult.success(eleRecordManageService.listPage(page, query));
+    }
+
+    @PostMapping("/add")
+    @Log(title = "鐢甸噺璁板綍-鏂板", businessType = BusinessType.INSERT)
+    public AjaxResult add(@RequestBody TqdianbiaoEleRecord record) {
+        return eleRecordManageService.addRecord(record) ? AjaxResult.success() : AjaxResult.error();
+    }
+
+    @PostMapping("/update")
+    @Log(title = "鐢甸噺璁板綍-淇敼", businessType = BusinessType.UPDATE)
+    public AjaxResult update(@RequestBody TqdianbiaoEleRecord record) {
+        return eleRecordManageService.updateRecord(record) ? AjaxResult.success() : AjaxResult.error();
+    }
+
+    @DeleteMapping("/delete")
+    @Log(title = "鐢甸噺璁板綍-鍒犻櫎", businessType = BusinessType.DELETE)
+    public AjaxResult delete(@RequestBody List<Long> ids) {
+        return eleRecordManageService.deleteByIds(ids) ? AjaxResult.success() : AjaxResult.error();
+    }
+
+    @GetMapping("/prevReading")
+    @Operation(summary = "鑾峰彇涓婃鐢甸噺璇绘暟")
+    public AjaxResult prevReading(Long meterId, String timeKey) {
+        return AjaxResult.success(eleRecordManageService.getPrevReading(meterId, timeKey));
+    }
+
+    @PostMapping("/syncRecentOnce")
+    @Log(title = "鐢甸噺璁板綍-杩戜笁澶╄ˉ鏁�", businessType = BusinessType.OTHER)
+    @Operation(summary = "鍚屾鍓嶄笁澶╄嚦褰撳墠灏忔椂鐢甸噺锛堜竴娆℃�цˉ鏁帮級")
+    public AjaxResult syncRecentOnce() {
+        LocalDateTime start = LocalDate.now().minusDays(3).atStartOfDay();
+        LocalDateTime end = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
+        int count = eleSyncService.syncLast3DaysHourData();
+        Map<String, Object> data = new HashMap<>();
+        data.put("count", count);
+        data.put("startTime", start.format(HOUR_FMT));
+        data.put("endTime", end.format(HOUR_FMT));
+        return AjaxResult.success("鍚屾瀹屾垚锛�" + data.get("startTime") + " ~ " + data.get("endTime") + " 鍏� " + count + " 鏉�", data);
+    }
+}

--
Gitblit v1.9.3