skyline пре 1 година
родитељ
комит
02df8d0b65

+ 2 - 2
miniapp/src/main/java/com/kym/miniapp/jobs/StartChargeDelayJob.java

@@ -88,14 +88,14 @@ public class StartChargeDelayJob implements DelayService<DelayChargeOrder> {
                 log.info("预约启动充电处理线程:{}", Thread.currentThread().getName());
                 DelayedItem<DelayChargeOrder> delayedItem = null;
                 try {
+                    // 线程休眠300ms
+                    Thread.sleep(300);
                     delayedItem = START_DELAY_QUEUE.take();
                     log.info("出队预约充电订单:{},队列剩余:{}", delayedItem.data.getStartChargeSeq(), START_DELAY_QUEUE.size());
                     // 启动充电
                     var order = delayedItem.data;
                     chargeService.queryStartCharge(order.getUserId(), order.getConnectorId(), null, null,false, null, null);
                     log.info("预约充电启动成功:用户:{},订单号:{},预约启动时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getStartTime());
-                    // 线程休眠250ms
-                    Thread.sleep(250);
                 } catch (Exception e) {
                     if (e instanceof InterruptedException) {
                         log.error("预约充电队列take异常", e);

+ 3 - 4
miniapp/src/main/java/com/kym/miniapp/jobs/StopChargeDelayJob.java

@@ -85,7 +85,8 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
                 DelayedItem<DelayChargeOrder> delayedItem;
 
                 try {
-                    Thread.sleep(100);
+                    // 线程休眠300ms
+                    Thread.sleep(300);
                     delayedItem = STOP_DELAY_QUEUE.take();
                     // 停止充电
                     var order = delayedItem.data;
@@ -95,14 +96,12 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
                     if (currentChargeOrder.getStartChargeSeq().equals(order.getStartChargeSeq())) {
                         chargeService.queryStopCharge(order.getUserId(), order.getConnectorId());
                         log.info("预约充电停止成功:用户:{},订单号:{},预约停止时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getEndTime());
-                        // 线程休眠100ms
-                        Thread.sleep(200);
+
                     } else {
                         log.error("预约充电停止异常:订单不匹配:原订单:{},当前设备最新订单:{}", order.getStartChargeSeq(), currentChargeOrder.getStartChargeSeq());
                         throw new BusinessException("预约充电停止异常");
                     }
 
-
                 } catch (Exception e) {
                     if (e instanceof InterruptedException) {
                         log.error("预约停止充电队列take异常", e);

+ 17 - 14
service/src/main/java/com/kym/service/platform/impl/PlatformNotifyServiceImpl.java

@@ -227,20 +227,23 @@ public class PlatformNotifyServiceImpl implements PlatformNotifyService {
         LOGGER.info("【{}互联互通平台推送】 :{},解密数据:{}", platformName, json, data);
         var startChargeSeq = data.getString("StartChargeSeq");
         var chargeOrder = chargeOrderService.getChargingOrderByStartChargeSeq(startChargeSeq);
-        // 更新订单信息
-        chargeOrder.setSoc(data.getDoubleValue("Soc"));
-        chargeOrder.setTotalPower(data.getDoubleValue("TotalPower"));
-        chargeOrder.setTotalMoney((data.getBigDecimal("TotalMoney").multiply(BigDecimal.valueOf(100))).intValue());
-        chargeOrder.setElecMoney((data.getBigDecimal("ElecMoney").multiply(BigDecimal.valueOf(100))).intValue());
-        chargeOrder.setServiceMoney((data.getBigDecimal("SeviceMoney").multiply(BigDecimal.valueOf(100))).intValue()); // 这里文档service单词错误,按文档填写
-        chargeOrder.setSumPeriod(data.getIntValue("SumPeriod"));
-        chargeOrder.setChargeDetail(data.getString("ChargeDetails"));
-        chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
-        // 优化点 EN+一分钟推送一次,同时充电人数多的时候写入数据库过于频繁
-        // redis保存(更新)订单信息
-        redisTemplate.opsForHash().put(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, startChargeSeq, JSONObject.toJSONString(chargeOrder));
-        // 将数据库写入操作放到定时任务中
-        // chargeOrderService.updateById(chargeOrder);
+        // 如果订单已结束,则不更新订单信息
+        if (chargeOrder.getOrderStatus() == ChargeOrder.ORDER_STATUS_未知) {
+            // 更新订单信息
+            chargeOrder.setSoc(data.getDoubleValue("Soc"));
+            chargeOrder.setTotalPower(data.getDoubleValue("TotalPower"));
+            chargeOrder.setTotalMoney((data.getBigDecimal("TotalMoney").multiply(BigDecimal.valueOf(100))).intValue());
+            chargeOrder.setElecMoney((data.getBigDecimal("ElecMoney").multiply(BigDecimal.valueOf(100))).intValue());
+            chargeOrder.setServiceMoney((data.getBigDecimal("SeviceMoney").multiply(BigDecimal.valueOf(100))).intValue()); // 这里文档service单词错误,按文档填写
+            chargeOrder.setSumPeriod(data.getIntValue("SumPeriod"));
+            chargeOrder.setChargeDetail(data.getString("ChargeDetails"));
+            chargeOrder.setChargeStatus(data.getIntValue("StartChargeSeqStat"));
+            // 优化点 EN+一分钟推送一次,同时充电人数多的时候写入数据库过于频繁
+            // redis保存(更新)订单信息
+            redisTemplate.opsForHash().put(RedisKeys.CHARGE_ORDER_EQUIP_CHARGE_STATUS, startChargeSeq, JSONObject.toJSONString(chargeOrder));
+            // 将数据库写入操作放到定时任务中
+            // chargeOrderService.updateById(chargeOrder);
+        }
         var params = """
                 {
                     "StartChargeSeq":"%s",