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/service/impl/TqdianbiaoCollectorManageServiceImpl.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoCollectorManageServiceImpl.java b/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoCollectorManageServiceImpl.java
new file mode 100644
index 0000000..3661d10
--- /dev/null
+++ b/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoCollectorManageServiceImpl.java
@@ -0,0 +1,91 @@
+package com.ruoyi.http.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.http.mapper.TqdianbiaoCollectorMapper;
+import com.ruoyi.http.pojo.TqdianbiaoCollector;
+import com.ruoyi.http.service.TqdianbiaoCollectorManageService;
+import com.ruoyi.http.service.TqdianbiaoCollectorSyncService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class TqdianbiaoCollectorManageServiceImpl
+        extends ServiceImpl<TqdianbiaoCollectorMapper, TqdianbiaoCollector>
+        implements TqdianbiaoCollectorManageService {
+
+    private final TqdianbiaoCollectorSyncService collectorSyncService;
+
+    @Override
+    public IPage<TqdianbiaoCollector> listPage(Page page, TqdianbiaoCollector query) {
+        return page(page, Wrappers.<TqdianbiaoCollector>lambdaQuery()
+                .and(StringUtils.isNotEmpty(query.getKeyword()), w -> w
+                        .like(TqdianbiaoCollector::getCollectorNo, query.getKeyword())
+                        .or()
+                        .like(TqdianbiaoCollector::getCollectorId, query.getKeyword())
+                        .or()
+                        .like(TqdianbiaoCollector::getDescription, query.getKeyword()))
+                .eq(StringUtils.isNotEmpty(query.getCollectorId()), TqdianbiaoCollector::getCollectorId, query.getCollectorId())
+                .orderByDesc(TqdianbiaoCollector::getUpdateTime));
+    }
+
+    @Override
+    public boolean addCollector(TqdianbiaoCollector collector) {
+        validateCollector(collector);
+        if (existsCollectorId(collector.getCollectorId(), null)) {
+            throw new ServiceException("閲囬泦鍣ㄦ。妗圛D宸插瓨鍦�");
+        }
+        collector.setSyncTime(LocalDateTime.now());
+        return save(collector);
+    }
+
+    @Override
+    public boolean updateCollector(TqdianbiaoCollector collector) {
+        if (collector.getId() == null) {
+            throw new ServiceException("ID涓嶈兘涓虹┖");
+        }
+        validateCollector(collector);
+        if (existsCollectorId(collector.getCollectorId(), collector.getId())) {
+            throw new ServiceException("閲囬泦鍣ㄦ。妗圛D宸插瓨鍦�");
+        }
+        collector.setSyncTime(LocalDateTime.now());
+        return updateById(collector);
+    }
+
+    @Override
+    public boolean deleteByIds(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            throw new ServiceException("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return removeBatchByIds(ids);
+    }
+
+    @Override
+    public int syncFromRemote() {
+        return collectorSyncService.syncCollectors();
+    }
+
+    private void validateCollector(TqdianbiaoCollector collector) {
+        if (StringUtils.isEmpty(collector.getCollectorId())) {
+            throw new ServiceException("閲囬泦鍣ㄦ。妗圛D涓嶈兘涓虹┖");
+        }
+        if (StringUtils.isEmpty(collector.getCollectorNo())) {
+            throw new ServiceException("閲囬泦鍣ㄥ彿涓嶈兘涓虹┖");
+        }
+    }
+
+    private boolean existsCollectorId(String collectorId, Long excludeId) {
+        return count(Wrappers.<TqdianbiaoCollector>lambdaQuery()
+                .eq(TqdianbiaoCollector::getCollectorId, collectorId)
+                .ne(excludeId != null, TqdianbiaoCollector::getId, excludeId)) > 0;
+    }
+}

--
Gitblit v1.9.3