2026-04-23 41ab7abd0b0ec0fefb03b60bbaf42c02fbda666b
src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -3,11 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveProcess;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@@ -18,14 +18,14 @@
//基于redis的一个每日计数器
@Component
@RequiredArgsConstructor
public class DailyRedisCounter {
    private static final String KEY_PREFIX = "daily_counter:";
    private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd");
    private final StringRedisTemplate redisTemplate;
    public DailyRedisCounter(StringRedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
    @Value("${ruoyi.approvalNumberPrefix}")
    private String approvalNumberPrefix;
    /**查缓存
     * 获取指定计数器在今日的数值,并自增1
@@ -45,8 +45,7 @@
        return count;
    }
    @Autowired
    private ApproveProcessMapper approveProcessMapper;
    private final ApproveProcessMapper approveProcessMapper;
    /**
     * 获取当前时间的  开始日期  ,结束日期
@@ -71,7 +70,7 @@
     * @return 今日自增后的计数值
     */
    public long incrementAndGetByDb() {
        String approveId = redisTemplate.opsForValue().get("approveNum");
        String approveId = redisTemplate.opsForValue().get(approvalNumberPrefix + ":approveNum");
        if(approveId == null){
            StartAndEndDateDto dateTime = getDateTime();
            LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -81,16 +80,16 @@
                    .lt(ApproveProcess::getCreateTime,dateTime.getEndDate());
            Long aLong = approveProcessMapper.selectCount(approveProcessLambdaQueryWrapper);
            if(aLong == null){
                redisTemplate.opsForValue().set("approveNum","1",1L, TimeUnit.HOURS);
                redisTemplate.opsForValue().set(approvalNumberPrefix + ":approveNum","1",1L, TimeUnit.HOURS);
                return 1;
            }else{
                aLong += 1;
                redisTemplate.opsForValue().set("approveNum",aLong.toString(),1L, TimeUnit.HOURS);
                redisTemplate.opsForValue().set(approvalNumberPrefix + ":approveNum",aLong.toString(),1L, TimeUnit.HOURS);
                return aLong;
            }
        }else{
            Long num = Long.parseLong(approveId) + 1;
            redisTemplate.opsForValue().set("approveNum",num.toString(),1L, TimeUnit.HOURS);
            redisTemplate.opsForValue().set(approvalNumberPrefix + ":approveNum",num.toString(),1L, TimeUnit.HOURS);
            return Long.parseLong(approveId);
        }