Просмотр исходного кода

优化点 EN+充电状态推送更新数据库过于频繁问题

skyline 1 год назад
Родитель
Сommit
0625979713

+ 3 - 0
miniapp/src/main/java/com/kym/miniapp/jobs/EquipmentChargeStatusJob.java

@@ -40,6 +40,9 @@ public class EquipmentChargeStatusJob {
             orders.forEach(order -> {
             orders.forEach(order -> {
                 var chargeOrder = JSONObject.parseObject(order.toString(), ChargeOrder.class);
                 var chargeOrder = JSONObject.parseObject(order.toString(), ChargeOrder.class);
                 orderList.add(chargeOrder);
                 orderList.add(chargeOrder);
+                if (chargeOrder.getChargeStatus().equals(ChargeOrder.CHARGE_STATUS_停止中) || chargeOrder.getChargeStatus().equals(ChargeOrder.CHARGE_STATUS_已结束)) {
+                    redisTemplate.opsForHash().delete(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, chargeOrder.getStartChargeSeq());
+                }
             });
             });
             chargeOrderService.updateBatchByQueryWrapper(orderList, order ->
             chargeOrderService.updateBatchByQueryWrapper(orderList, order ->
                     new QueryWrapper<ChargeOrder>().eq("start_charge_seq", order.getStartChargeSeq()));
                     new QueryWrapper<ChargeOrder>().eq("start_charge_seq", order.getStartChargeSeq()));

+ 1 - 1
service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -215,7 +215,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
         chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
         chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
         // 优化点 EN+一分钟推送一次,同时充电人数多的时候写入数据库过于频繁
         // 优化点 EN+一分钟推送一次,同时充电人数多的时候写入数据库过于频繁
         // redis保存(更新)订单信息
         // redis保存(更新)订单信息
-        redisTemplate.opsForHash().put(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, startChargeSeq, dataStr);
+        redisTemplate.opsForHash().put(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, startChargeSeq, JSONObject.toJSONString(chargeOrder));
         // 将数据库写入操作放到定时任务中
         // 将数据库写入操作放到定时任务中
         // chargeOrderService.updateById(chargeOrder);
         // chargeOrderService.updateById(chargeOrder);
         return """
         return """