From 14f2c4fce50c871d84f89d2dca2298e0892b4672 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 05 五月 2026 08:25:26 +0800
Subject: [PATCH] Merge branch 'rcs_master_1.0' into rcs_master_all

---
 zy-acs-hex/src/main/java/com/zy/acs/hex/controller/DeviceLogController.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/zy-acs-hex/src/main/java/com/zy/acs/hex/controller/DeviceLogController.java b/zy-acs-hex/src/main/java/com/zy/acs/hex/controller/DeviceLogController.java
new file mode 100644
index 0000000..8a8e6b2
--- /dev/null
+++ b/zy-acs-hex/src/main/java/com/zy/acs/hex/controller/DeviceLogController.java
@@ -0,0 +1,80 @@
+package com.zy.acs.hex.controller;
+
+import com.influxdb.v3.client.PointValues;
+import com.zy.acs.framework.common.R;
+import com.zy.acs.hex.domain.DeviceLog;
+import com.zy.component.influxdb.service.InfluxDBService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+@RestController
+@Slf4j
+@RequestMapping(value = "/deviceLog")
+public class DeviceLogController {
+
+    @Autowired
+    private InfluxDBService influxDBService;
+
+
+    /**
+     * 鏌ヨ鏈�鏂扮殑鍗佹潯鏁版嵁
+     *
+     * @return
+     */
+    @GetMapping(value = "/query")
+    @ResponseBody
+    public R query(@RequestParam(required = false, defaultValue = "device") String measurement,
+                   @RequestParam(required = false) Map<String, Object> conditions,
+                   @RequestParam(required = false, defaultValue = "100") Integer limit,
+                   @RequestParam(required = false, defaultValue = "time") String orderBy,
+                   @RequestParam(required = false, defaultValue = "DESC") String orderDirection) {
+        return R.ok(getData(measurement, conditions, limit, orderBy, orderDirection));
+    }
+
+
+    /**
+     * 閫氱敤鏌ヨ鏂规硶锛屾敮鎸佸姩鎬佹潯浠�
+     */
+    private List<DeviceLog> getData(String measurement, Map<String, Object> conditions,int limit, String orderBy, String orderDirection) {
+        // 鏋勫缓鏌ヨ璇彞
+        StringBuilder sqlBuilder = new StringBuilder("SELECT * FROM ").append(measurement).append(" WHERE 1=1");
+        Map<String, Object> params = new HashMap<>();
+
+        // 鍔ㄦ�佹坊鍔犳潯浠�
+        if (conditions != null && !conditions.isEmpty()) {
+            if (conditions.get("startTime") != null) {
+                if (conditions.get("startTime") != null) {
+                    sqlBuilder.append(" AND ").append("time").append(" >= :").append("startTime");
+                    params.put("startTime", conditions.get("startTime"));
+                }
+            }else if (conditions.get("endTime") != null) {
+                if (conditions.get("endTime") != null) {
+                    sqlBuilder.append(" AND ").append("time").append(" <= :").append("endTime");
+                    params.put("endTime", conditions.get("endTime"));
+                }
+            }else {
+                conditions.forEach((key, value) -> {
+                    if (value != null) {
+                        sqlBuilder.append(" AND ").append(key).append(" = :").append(key);
+                        params.put(key, value);
+                    }
+                });
+            }
+        }
+        // 娣诲姞鎺掑簭鍜岄檺鍒�
+        sqlBuilder.append(" ORDER BY ").append(orderBy).append(" ").append(orderDirection);
+        sqlBuilder.append(" LIMIT :limit");
+        params.put("limit", limit);
+        return influxDBService.queryPoints(sqlBuilder.toString(),params, DeviceLog.class);
+    }
+
+}

--
Gitblit v1.9.1