EquipmentChargeStatusJob.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.kym.miniapp.jobs;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.kym.common.utils.CommUtil;
  5. import com.kym.entity.common.RedisKeys;
  6. import com.kym.entity.miniapp.ChargeOrder;
  7. import com.kym.service.miniapp.ChargeOrderService;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.data.redis.core.StringRedisTemplate;
  10. import org.springframework.scheduling.annotation.Scheduled;
  11. import org.springframework.stereotype.Component;
  12. import java.util.ArrayList;
  13. /**
  14. * @author skyline
  15. * 设备充电状态信息(订单信息)更新定时任务
  16. * 2024-08-12
  17. */
  18. @Component
  19. @Slf4j
  20. public class EquipmentChargeStatusJob {
  21. private final StringRedisTemplate redisTemplate;
  22. private final ChargeOrderService chargeOrderService;
  23. public EquipmentChargeStatusJob(StringRedisTemplate redisTemplate, ChargeOrderService chargeOrderService) {
  24. this.redisTemplate = redisTemplate;
  25. this.chargeOrderService = chargeOrderService;
  26. }
  27. // 每5分钟执行一次
  28. // @Scheduled(cron = "0 0/5 * * * ?")
  29. public void executeMpUserRelationJob() {
  30. log.info("设备充电状态信息(订单信息)更新定时任务启动...");
  31. var orders = redisTemplate.opsForHash().values(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS);
  32. if (CommUtil.isNotEmptyAndNull(orders)) {
  33. var orderList = new ArrayList<ChargeOrder>();
  34. orders.forEach(order -> {
  35. var chargeOrder = JSONObject.parseObject(order.toString(), ChargeOrder.class);
  36. orderList.add(chargeOrder);
  37. if (chargeOrder.getChargeStatus().equals(ChargeOrder.CHARGE_STATUS_停止中) || chargeOrder.getChargeStatus().equals(ChargeOrder.CHARGE_STATUS_已结束)) {
  38. redisTemplate.opsForHash().delete(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, chargeOrder.getStartChargeSeq());
  39. }
  40. });
  41. chargeOrderService.updateBatchByQueryWrapper(orderList, order ->
  42. new QueryWrapper<ChargeOrder>().eq("start_charge_seq", order.getStartChargeSeq()));
  43. }
  44. log.info("设备充电状态信息(订单信息)更新定时任务结束...");
  45. }
  46. }