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