From 988bbb6fe92380ba992a146ed94df2d8973a4edb Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期四, 10 七月 2025 16:48:47 +0800 Subject: [PATCH] 储能对接 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java | 172 +++++--------------------------------------------------- 1 files changed, 17 insertions(+), 155 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 fb0abf6..d7aa1f6 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 @@ -14,176 +14,38 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; import java.time.LocalTime; import java.util.List; import java.util.Random; + +/** + * 定时任务:储能放电情况 光伏发电情况 + */ @Service public class EnergyRefreshService { private final Random random = new Random(); @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; // 控制任务是否继续执行 - - // 定时任务方法 - @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; - } - - if(currentValue.doubleValue()==87){ - return; - } - if(currentValue.doubleValue()>87){ - updateCurrentValue(new BigDecimal("87")); - 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() { - //获取系统建设日期和累计储能放电量 - 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点执行 + // 记录截至昨天的总量(每天凌晨0点) + @Scheduled(cron = "0 0 0 * * ?") public void reset() { - BigDecimal currentValue = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); - updateCurrentValue(currentValue); + String electricity = KsolarUtils.getElectricity(); - refreshValueOne = new BigDecimal("0"); - TSystemConfiguration sysConfigs = systemConfigurationMapper.selectList(new LambdaQueryWrapper<TSystemConfiguration>() - .eq(TSystemConfiguration::getType,4)).get(0); - sysConfigs.setContent("0"); - systemConfigurationMapper.updateById(sysConfigs); + TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>() + .eq(TSystemConfiguration::getType,5)); + sysConfig.setContent(electricity.split("_")[0]); + systemConfigurationMapper.updateById(sysConfig); - //更新 - this.isRunning = true; + TSystemConfiguration sysConfig1 = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>() + .eq(TSystemConfiguration::getType,4)); + sysConfig1.setContent(electricity.split("_")[1]); + systemConfigurationMapper.updateById(sysConfig1); + } - - - - public static BigDecimal refreshValueOne = new BigDecimal("0"); - /** - *光伏发电和消纳 - */ - @Scheduled(cron = "0 */1 * * * ?") // 每分钟点执行 - public void refreshValueOne() { - // 判断时间是否在6:00到8:59 - LocalTime now = LocalTime.now(); - if (now.isAfter(LocalTime.of(6, 0)) && now.isBefore(LocalTime.of(8, 59))) { - refreshValueOne = refreshValueOne.add(new BigDecimal("0.5")); - List<TSystemConfiguration> sysConfigs = systemConfigurationMapper.selectList(new LambdaQueryWrapper<TSystemConfiguration>() - .in(TSystemConfiguration::getType,4,5)); - TSystemConfiguration sysConfig = sysConfigs.stream().filter(e -> e.getType() == 4).findFirst().orElse(null); - sysConfig.setContent(refreshValueOne.toString()); - systemConfigurationMapper.updateById(sysConfig); - - - TSystemConfiguration sysConfig1 = sysConfigs.stream().filter(e -> e.getType() == 5).findFirst().orElse(null); - String string = new BigDecimal(sysConfig1.getContent()).add(new BigDecimal("0.5")).toString(); - sysConfig1.setContent(string); - systemConfigurationMapper.updateById(sysConfig1); - // 在6:00到8:59之间,不执行 - return; - } - // 9:00-16:59每分钟增加随机3 到 3.5 - if (now.isAfter(LocalTime.of(9, 0)) && now.isBefore(LocalTime.of(16, 59))) { - refreshValueOne = refreshValueOne.add(new BigDecimal(3 + (3.5 - 3) * random.nextDouble()) - .setScale(2, RoundingMode.HALF_UP)); - List<TSystemConfiguration> sysConfigs = systemConfigurationMapper.selectList(new LambdaQueryWrapper<TSystemConfiguration>() - .in(TSystemConfiguration::getType,4,5)); - - TSystemConfiguration sysConfig = sysConfigs.stream().filter(e -> e.getType() == 4).findFirst().orElse(null); - sysConfig.setContent(refreshValueOne.toString()); - systemConfigurationMapper.updateById(sysConfig); - - - TSystemConfiguration sysConfig1 = sysConfigs.stream().filter(e -> e.getType() == 5).findFirst().orElse(null); - String string = new BigDecimal(sysConfig1.getContent()).add(new BigDecimal(3 + (3.5 - 3) * random.nextDouble())).toString(); - sysConfig1.setContent(string); - systemConfigurationMapper.updateById(sysConfig1); - return; - } - //17:00-18:59 每分钟增加0.5 - if (now.isAfter(LocalTime.of(17, 0)) && now.isBefore(LocalTime.of(18, 59))) { - refreshValueOne = refreshValueOne.add(new BigDecimal("0.5")); - List<TSystemConfiguration> sysConfigs = systemConfigurationMapper.selectList(new LambdaQueryWrapper<TSystemConfiguration>() - .in(TSystemConfiguration::getType,4,5)); - - TSystemConfiguration sysConfig = sysConfigs.stream().filter(e -> e.getType() == 4).findFirst().orElse(null); - sysConfig.setContent(refreshValueOne.toString()); - systemConfigurationMapper.updateById(sysConfig); - - - TSystemConfiguration sysConfig1 = sysConfigs.stream().filter(e -> e.getType() == 5).findFirst().orElse(null); - String string = new BigDecimal(sysConfig1.getContent()).add(new BigDecimal("0.5")).toString(); - sysConfig1.setContent(string); - systemConfigurationMapper.updateById(sysConfig1); - } - } - - } \ No newline at end of file -- Gitblit v1.7.1