From 5012f07f2505db600fa15dbc95955f5a6f92ba3e Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期一, 26 五月 2025 11:29:25 +0800 Subject: [PATCH] 大屏修改,将储能今日放电字段持久化 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java | 85 ++++++++++++++++++++++++++++++------------ 1 files changed, 61 insertions(+), 24 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java index 9a90ec5..fa1937a 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java @@ -1,9 +1,17 @@ package com.ruoyi.other.util; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.other.api.domain.TSystemConfiguration; +import com.ruoyi.other.mapper.TSystemConfigurationMapper; +import com.ruoyi.other.vo.ScreenStorageConfigVO; +import lombok.Getter; +import lombok.Setter; import lombok.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalTime; @@ -12,60 +20,89 @@ @Service public class EnergyRefreshService { private final Random random = new Random(); - private BigDecimal currentValue; - + @Resource + private TSystemConfigurationMapper systemConfigurationMapper; private final BigDecimal targetLow = new BigDecimal("85"); private final BigDecimal targetHigh = new BigDecimal("87"); - + private final int maxIncrement = 10; - + private boolean isRunning = true; // 控制任务是否继续执行 - public EnergyRefreshService() { - this.currentValue = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); - } - // 定时任务方法 - @Scheduled(cron = "${0 */15 * * * ?}")//15分钟执行一次 + @Scheduled(cron = "0 */15 * * * ?")//15分钟执行一次 public synchronized void refreshValue() { + // 检查当前时间是否在允许的时间段内 + LocalTime now = LocalTime.now(); + boolean isInMorning = now.isAfter(LocalTime.of(10, 0)) && now.isBefore(LocalTime.of(12, 0)); + boolean isInAfternoon = now.isAfter(LocalTime.of(15, 0)) && now.isBefore(LocalTime.of(21, 0)); + + if (!isInMorning && !isInAfternoon) { + return; + } + + + //获取当前值 + BigDecimal currentValue = getCurrentValue(); // 检查是否已停止或达到目标范围 if (!isRunning || isWithinTargetRange(currentValue)) { isRunning = false; return; } - // 检查当前时间是否在允许的时间段内 - LocalTime now = LocalTime.now(); - boolean isInMorning = now.isAfter(LocalTime.of(10, 0)) && now.isBefore(LocalTime.of(12, 0)); - boolean isInAfternoon = now.isAfter(LocalTime.of(15, 0)) && now.isBefore(LocalTime.of(21, 0)); - - if (!isInMorning && !isInAfternoon) { - return; - } - + // 生成随机增量并更新值 int increment = random.nextInt(maxIncrement + 1); currentValue = currentValue.add(BigDecimal.valueOf(increment)) .setScale(2, RoundingMode.HALF_UP); - + //更新值 + updateCurrentValue(currentValue); System.out.printf("定时刷新:当前时间 %s,当前值:%.2f%n", now, currentValue); } private boolean isWithinTargetRange(BigDecimal value) { return value.compareTo(targetLow) >= 0 && value.compareTo(targetHigh) <= 0; } - - // 提供获取当前值的方法 + + /** + * 获取当前值 + */ public BigDecimal getCurrentValue() { - return currentValue; + //获取系统建设日期和累计储能放电量 + TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>() + .eq(TSystemConfiguration::getType,3)); + //解析 + ScreenStorageConfigVO configVO = JSON.parseObject(sysConfig.getContent(), ScreenStorageConfigVO.class); + return configVO.getCurrentValue(); } - + + /** + * 更新当前值 + */ + private void updateCurrentValue(BigDecimal currentValue) { + //获取系统建设日期和累计储能放电量 + TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>() + .eq(TSystemConfiguration::getType,3)); + //解析 + ScreenStorageConfigVO configVO = JSON.parseObject(sysConfig.getContent(), ScreenStorageConfigVO.class); + //更新 + configVO.setCurrentValue(currentValue); + String json = JSON.toJSONString(configVO); + sysConfig.setContent(json); + systemConfigurationMapper.updateById(sysConfig); + } + + + // 重置任务 + @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨0点执行 public void reset() { - this.currentValue = BigDecimal.ZERO; + BigDecimal currentValue = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); + updateCurrentValue(currentValue); + //更新 this.isRunning = true; } -- Gitblit v1.7.1