DeviceFaultJob.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.xy.job;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.xxl.job.core.biz.model.ReturnT;
  5. import com.xxl.job.core.handler.annotation.XxlJob;
  6. import com.xy.entity.DeviceFaultLog;
  7. import com.xy.entity.SysDictRedis;
  8. import com.xy.service.DeviceFaultLogServiceImpl;
  9. import com.xy.sys.EnumDataClearSize;
  10. import com.xy.utils.RecursionUtils;
  11. import com.xy.utils.SysDictUtils;
  12. import lombok.AllArgsConstructor;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.stereotype.Component;
  15. import java.util.Date;
  16. /**
  17. * 设备故障job
  18. *
  19. * @author 谭斌
  20. * @date 2024/01/08
  21. */
  22. @Slf4j
  23. @Component
  24. @AllArgsConstructor
  25. public class DeviceFaultJob {
  26. private DeviceFaultLogServiceImpl deviceFaultLogService;
  27. /**
  28. * 故障日志清理 默认保留n天
  29. *
  30. * @return
  31. */
  32. @XxlJob("delDeviceFaultLog")
  33. public ReturnT<String> delDeviceFaultLog() {
  34. SysDictRedis sysDictRedis = SysDictUtils.get(EnumDataClearSize.Code.CODE.getCode(), EnumDataClearSize.DEVICE_FAULT_LOG_DAY.getCode());
  35. Integer saveDay = Integer.valueOf(sysDictRedis.getValue());
  36. // 获取当前日期
  37. Date today = DateUtil.date();
  38. // 获取n天前的日期的开始时间(包含今天)
  39. Date daysAgo = DateUtil.beginOfDay(DateUtil.offsetDay(today, -(saveDay - 1)));
  40. LambdaQueryWrapper<DeviceFaultLog> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceFaultLog>()
  41. .lt(DeviceFaultLog::getEventTime, daysAgo)
  42. .last("limit 10000");
  43. RecursionUtils.recursion(current -> {
  44. boolean remove = deviceFaultLogService.remove(lambdaQueryWrapper);
  45. if (!remove) {
  46. return false;
  47. }
  48. return true;
  49. });
  50. return ReturnT.SUCCESS;
  51. }
  52. }