Job.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.fdkankan.project.tieta.schedule;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.date.DateTime;
  4. import cn.hutool.core.date.DateUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.fdkankan.project.tieta.constant.Constant;
  8. import com.fdkankan.project.tieta.dto.ScenePushDTO;
  9. import com.fdkankan.project.tieta.entity.FullphotoFileindex;
  10. import com.fdkankan.project.tieta.entity.FullphotoUprecord;
  11. import com.fdkankan.project.tieta.service.FullphotoFileindexService;
  12. import com.fdkankan.project.tieta.service.FullphotoUprecordService;
  13. import com.fdkankan.project.tieta.service.IConvertService;
  14. import com.fdkankan.redis.util.RedisClient;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.scheduling.annotation.Scheduled;
  17. import org.springframework.stereotype.Component;
  18. import javax.annotation.Resource;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.Map;
  22. @Component
  23. public class Job {
  24. private static final String startTime = "2024-09-10 00:00:00";
  25. @Resource
  26. private RedisClient redisClient;
  27. @Autowired
  28. private FullphotoUprecordService fullphotoUprecordService;
  29. @Autowired
  30. private IConvertService convertService;
  31. @Autowired
  32. private FullphotoFileindexService fullphotoFileindexService;
  33. @Scheduled(initialDelay = 2*10*1000, fixedDelay = 10*60*1000)
  34. public void push(){
  35. // Map<String, Object> lockMap = redisClient.lockLeaseTime(Constant.REDIS_LOCK_SCENE_CONVERT, 30 * 60 * 1000);
  36. // boolean lock = (Boolean) lockMap.get("lock");
  37. // if(!lock){
  38. // return;
  39. // }
  40. // String uniqueFlag = (String) lockMap.get("uniqueFlag");
  41. // try {
  42. String startTimeStr = redisClient.get(Constant.REDIS_SCENE_CONVERT_STARTTIME);
  43. if(StrUtil.isEmpty(startTimeStr)){
  44. startTimeStr = "2024-09-01 00:00:00";
  45. redisClient.add(Constant.REDIS_SCENE_CONVERT_STARTTIME, startTimeStr);
  46. }
  47. DateTime start = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss");
  48. List<FullphotoUprecord> list = fullphotoUprecordService.list(new LambdaQueryWrapper<FullphotoUprecord>().eq(FullphotoUprecord::getStatus, 1).gt(FullphotoUprecord::getUpTime, start));
  49. if(CollUtil.isEmpty(list)){
  50. return;
  51. }
  52. Date maxTime = start;
  53. for (FullphotoUprecord item : list) {
  54. //判断是否有obj,有obj才推送
  55. List<FullphotoFileindex> objList = fullphotoFileindexService.list(new LambdaQueryWrapper<FullphotoFileindex>().eq(FullphotoFileindex::getUploadId, item.getUploadId()).eq(FullphotoFileindex::getFileType, "11").eq(FullphotoFileindex::getStatus, 1));
  56. if(CollUtil.isEmpty(objList)){
  57. continue;
  58. }
  59. convertService.scenePush(ScenePushDTO.builder().stationCode(item.getStationCode()).entityId(item.getEntityId()).build(), null);
  60. if(maxTime.before(item.getUpTime())){
  61. maxTime = item.getUpTime();
  62. redisClient.add(Constant.REDIS_SCENE_CONVERT_STARTTIME, DateUtil.format(maxTime, "yyyy-MM-dd HH:mm:ss"));
  63. }
  64. }
  65. // }finally {
  66. // if(lock){
  67. // redisClient.unLock(Constant.REDIS_LOCK_SCENE_CONVERT, uniqueFlag);
  68. // }
  69. // }
  70. }
  71. }