From 3b8b9508a015daae960d0b4f4a25e62949f983c5 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 08 九月 2026 14:37:20 +0800
Subject: [PATCH] 修改充电枪状态更新时效问题

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java |   67 ++++++++++++++++++++++++++++++---
 1 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index 57aeb64..32a1b09 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -275,15 +275,10 @@
 		String gun_code = vo.getGun_code();
 		//0:正常,1:故障,2=插枪
 		Integer status = vo.getStatus();
-		Long time = (Long) redisTemplate.opsForHash().get("charging_gun_online", (pile_code + gun_code));
-		//小于3秒才处理数据,防止频繁查询数据
-//		if(null != time && (System.currentTimeMillis() - time) < 3000){
-//			return;
-//		}
 		TChargingGun tChargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getFullNumber, (pile_code + gun_code)).eq(TChargingGun::getDelFlag, 0));
 		if(null != tChargingGun){
+            //写入缓存数据,用于充电桩对接服务中限制频率
 			redisTemplate.opsForHash().put("charging_gun_online", tChargingGun.getFullNumber(), System.currentTimeMillis());
-
 
 			TChargingPile chargingPile = chargingPileService.getById(tChargingGun.getChargingPileId());
 			//枪处于离线或者故障,返回状态为正常,则修改其状态
@@ -416,6 +411,66 @@
 
 
 
+    @ResponseBody
+    @PostMapping("/realTimeUpdateChargingPileStatus")
+    public void realTimeUpdateChargingPileStatus(@RequestBody UpdateChargingPileStatusVo vo){
+        String pile_code = vo.getPile_code();
+        String gun_code = vo.getGun_code();
+        //0:离线,1:故障,2:空闲,3:充电
+        Integer status = vo.getStatus();
+        TChargingGun tChargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getFullNumber, (pile_code + gun_code)).eq(TChargingGun::getDelFlag, 0));
+        if(null != tChargingGun){
+            TChargingPile chargingPile = chargingPileService.getById(tChargingGun.getChargingPileId());
+            Site site = siteService.getById(tChargingGun.getSiteId());
+            TChargingGun tChargingGun1 = new TChargingGun();
+            tChargingGun1.setId(tChargingGun.getId());
+            tChargingGun1.setStatus(getStatus(status, vo.getInsertionStatus()));
+            chargingGunService.updateById(tChargingGun1);
+            tChargingGun.setStatus(tChargingGun1.getStatus());
+            threadPoolExecutor.execute(()->{
+                //上传成都监管
+                chengDuJianGuanClient.notificationStationStatus(tChargingGun.getId());
+            });
+            if(site.getIsOpenSynchronization() == 1){
+                threadPoolExecutor.execute(()->{
+                    //推送状态给三方平台
+                    tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus());
+                    pushConnectorStatus(tChargingGun);
+                });
+            }
+
+            if(tChargingGun1.getStatus() == 7){
+                TFaultMessage faultMessage = new TFaultMessage();
+                faultMessage.setSiteId(chargingPile.getSiteId());
+                faultMessage.setChargingPileId(chargingPile.getId());
+                faultMessage.setChargingGunId(tChargingGun.getId());
+                faultMessage.setStatus(2);
+                faultMessage.setDownTime(LocalDateTime.now());
+                faultMessage.setCreateTime(LocalDateTime.now());
+                faultMessage.setDelFlag(false);
+                faultMessage.setContent("设备故障");
+                faultMessageService.save(faultMessage);
+            }
+        }
+    }
+
+
+    private Integer getStatus(Integer status, Integer insertionStatus){
+        switch (status){
+            case 0:
+                return 1;
+            case 1:
+                return 7;
+            case 2:
+                return 0 == insertionStatus ? 2 : 3;
+            case 3:
+                return 0 == insertionStatus ? 2 : 4;
+            default:
+                return 7;
+        }
+    }
+
+
 
 	@ResponseBody
 	@PostMapping("/getAllPile")

--
Gitblit v1.7.1