liujie
3 天以前 0f4459e4201fdc19185b7dd03215871f036acd70
Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

# Conflicts:
# ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java
5个文件已修改
97 ■■■■ 已修改文件
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mqtt/util/MqttPushUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EnergyRefreshService.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/governmentCloud/UploadDataTaskUtil.java
@@ -38,8 +38,8 @@
    /**
     * 每天的9点执行的任务
     */
//    @Scheduled(cron = "0 0 9 * * *")
    @Scheduled(fixedRate = 60000)
    @Scheduled(cron = "0 0 9 * * *")
//    @Scheduled(fixedRate = 60000)
    public void taskDay(){
        try {
            // 传输mongodb的硬件数据
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/mqtt/util/MqttPushUtil.java
@@ -18,10 +18,10 @@
//    private final static String CLIENT_ID = "mqttx_3267186711111fdsasdsa";
//    private final static String USER_NAME = "admin";
//    private final static String PASS_WORD = "mingxingdianli123";
    private final static String HOST = "tcp://183.220.129.95:1883";
    private final static String HOST = "tcp://182.129.202.2:1883";
    private final static String CLIENT_ID = "mqttx_3267186711111mxcdszyun";
    private final static String USER_NAME = "mxEmqx";
    private final static String PASS_WORD = "admin";
    private final static String PASS_WORD = "csDN_wlwpt";
    private final static Integer TIME_OUT = 30000;
    private final static Integer KEEP_ALIVE = 60000;
    private MqttClient mqttClient;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TScreenContentMapper.java
@@ -1,7 +1,6 @@
package com.ruoyi.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.other.api.domain.TNotice;
import com.ruoyi.other.api.domain.TScreenContent;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
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);
    }
    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;
        }
        
        // 检查当前时间是否在允许的时间段内
        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;
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ScreenStorageConfigVO.java
@@ -25,4 +25,9 @@
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate lastUpdated;
    /**
     * 储能放电情况 今日放能 规定时间内 随机增长 凌晨数值重置
     */
    private BigDecimal currentValue;
}