From ee90d67775ec0926eb2e6ab4632a10ab0c461b7d Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 27 十一月 2025 14:57:59 +0800
Subject: [PATCH] 新增加成都监管数据对接

---
 ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java            |   33 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                    |   79 +++++++
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java                              |   21 -
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java                   |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java                                        |   19 +
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java           |  311 +++++++++++++++++++++++++--
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java                 |   41 +-
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java       |   17 +
 /dev/null                                                                                                              |   23 --
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java        |   29 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java    |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java          |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                |   10 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java                     |   12 +
 ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java |   20 +
 ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java       |   15 +
 16 files changed, 543 insertions(+), 101 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
index 7e6c33f..d604215 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -459,20 +459,11 @@
 	@TableField("isOpenSynchronization")
 	@ApiModelProperty(value = "引流平台数据同步(0=否,1=是)")
 	private Integer isOpenSynchronization;
-//	/**
-//	 * 换电设备信息
-//	 */
-//	@TableField("swap_equipment_infos")
-//	@ApiModelProperty(value = "2.0修改字段-换电设备信息 站点分类为2或3时必填 示例:" +
-//			"[{" +
-//			"\"SwapMechanicalEquipmentID\": \"A564778B\"," +
-//			"\"MechanicalEquipmentPower\": 128.0000" +
-//			"}," +
-//			"{" +
-//			"\"SwapMechanicalEquipmentID\": \"A564778C\"," +
-//			"\"MechanicalEquipmentPower\": 150.0000" +
-//			"}" +
-//			"]")
-//	private String swapEquipmentInfos;
+	/**
+	 * 是否有储能设施(0:无,1:有)
+	 */
+	@TableField("isEnergyStorage")
+	@ApiModelProperty(value = "是否有储能设施(0:无,1:有)")
+	private Integer isEnergyStorage;
 
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
index f57b585..b3c714a 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
@@ -112,4 +112,16 @@
     @ApiModelProperty(value = "充电设备纬度")
     @TableField("equipment_lat")
     private String equipmentLat;
+    @ApiModelProperty(value = "设备出厂编码")
+    @TableField("equipment_product_code")
+    private String equipmentProductCode;
+    @ApiModelProperty(value = "设备用途 1:公共,50:个人, 100:公交(专用), 101:环卫(专用),102:物流(专用),103:出租车(专用),104:分时租赁(专用),106:单位(专用),107:移动站点(移动储能设备), 108:居民小区(公共), 109:居民小区(专用)")
+    @TableField("equipment_purpose")
+    private Integer equipmentPurpose;
+    @ApiModelProperty(value = "新国标 0:否,1:是")
+    @TableField("new_national_standard")
+    private Integer newNationalStandard;
+    @ApiModelProperty(value = "是否支持VIN码识别 0:否,1:是")
+    @TableField("vin_flag")
+    private Integer vinFlag;
 }
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
index a7b995e..4df1516 100644
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
@@ -2,7 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
 public class ChengDuJianGuanClientFallbackFactory implements FallbackFactory<ChengDuJianGuanClient> {
@@ -15,9 +15,25 @@
             }
 
             @Override
-            public R notificationStationFee(NotificationStationFeeVo vo) {
+            public R notificationStationFee(Integer chargingPileId) {
                 return R.fail("站点费率变化推送失败:" + cause.getMessage());
             }
+
+            @Override
+            public R notificationStationStatus(Integer chargingGunId) {
+                return R.fail("设备状态变化推送失败:" + cause.getMessage());
+            }
+
+            @Override
+            public R notificationConnectorChargeStatus(NotificationConnectorChargeStatusVo vo) {
+                return R.fail("设备充电中状态变化推送失败:" + cause.getMessage());
+            }
+
+
+            @Override
+            public R notificationOrderInfo(NotificationConnectorChargeStatusVo vo) {
+                return R.fail("订单信息推送失败:" + cause.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
index 4e3489f..a8af05d 100644
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
@@ -4,7 +4,7 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.integration.api.factory.ChengDuJianGuanClientFallbackFactory;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -25,9 +25,36 @@
 
     /**
      * 站点费率变化推送
-     * @param vo
+     * @param chargingPileId
      * @return
      */
     @PostMapping("/chengdu/jianguan/notificationStationFee")
-    R notificationStationFee(@RequestBody NotificationStationFeeVo vo);
+    R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId);
+
+
+    /**
+     * 设备状态变化推送
+     * @param chargingGunId
+     * @return
+     */
+    @PostMapping("/chengdu/jianguan/notificationStationStatus")
+    R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId);
+
+
+    /**
+     * 设备充电中状态变化推送
+     * @param vo
+     * @return
+     */
+    @PostMapping("/chengdu/jianguan/notificationConnectorChargeStatus")
+    R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo);
+
+
+    /**
+     * 订单信息推送
+     * @param vo
+     * @return
+     */
+    @PostMapping("/chengdu/jianguan/notificationOrderInfo")
+    R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo);
 }
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java
new file mode 100644
index 0000000..334aebc
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java
@@ -0,0 +1,15 @@
+package com.ruoyi.integration.api.vo;
+
+import lombok.Data;
+
+@Data
+public class NotificationConnectorChargeStatusVo {
+    /**
+     * 充电枪id
+     */
+    private Integer chargingGunId;
+    /**
+     * 充电订单code
+     */
+    private String orderCode;
+}
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java
deleted file mode 100644
index 4d8ad3c..0000000
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.integration.api.vo;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-
-@Data
-public class NotificationStationFeeVo {
-    /**
-     * 站点code
-     */
-    private String siteCode;
-    /**
-     * 设备类型
-     * 1:直流设备
-     * 2:交流设备
-     * 3:交直流一体设备
-     */
-    private Integer equipmentType;
-    /**
-     * 充电桩code
-     */
-    private String chargingPileCode;
-}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 46fc1b1..fac99a8 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -27,6 +27,7 @@
 import com.ruoyi.common.security.annotation.RequiresPermissions;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
 import com.ruoyi.integration.api.feignClient.IntegrationClient;
 import com.ruoyi.integration.api.feignClient.TCECClient;
 import com.ruoyi.system.api.domain.SysUser;
@@ -76,6 +77,9 @@
     
     @Resource
     private TCECClient tcecClient;
+
+    @Resource
+    private ChengDuJianGuanClient chengDuJianGuanClient;
 
 
     @Autowired
@@ -140,6 +144,7 @@
             List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
             for (TChargingPile tChargingPile : list) {
                 integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
+                chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
             }
         }
         return AjaxResult.ok(dto.getId());
@@ -217,6 +222,7 @@
             List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
             for (TChargingPile tChargingPile : list) {
                 integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
+                chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
             }
         }
         return AjaxResult.success();
@@ -407,6 +413,7 @@
                 List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
                 for (TChargingPile tChargingPile : list) {
                     integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails));
+                    chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
                 }
             }
         }else {
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 c1d17cf..302d678 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
@@ -33,6 +33,7 @@
 import com.ruoyi.common.security.annotation.RequiresPermissions;
 import com.ruoyi.integration.api.elutong.model.ConnectorStatusInfo;
 import com.ruoyi.integration.api.elutong.model.ConnectorStatusReq;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
 import com.ruoyi.integration.api.feignClient.ELuTongClient;
 import com.ruoyi.integration.api.feignClient.TCECClient;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
@@ -88,6 +89,9 @@
 
 	@Resource
 	private ELuTongClient eLuTongClient;
+
+	@Resource
+	private ChengDuJianGuanClient chengDuJianGuanClient;
 
 
 
@@ -424,6 +428,7 @@
 			if(200 != r.getCode()){
 				log.error(r.getMsg());
 			}
+			chengDuJianGuanClient.notificationStationStatus(chargingGun.getId());
 		}
 	}
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 9cf18a7..f87737e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -26,6 +26,7 @@
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.integration.api.elutong.model.*;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
 import com.ruoyi.integration.api.feignClient.ELuTongClient;
 import com.ruoyi.integration.api.feignClient.IntegrationClient;
 import com.ruoyi.integration.api.feignClient.TCECClient;
@@ -47,6 +48,7 @@
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -99,6 +101,9 @@
 	private TCECClient tcecClient;
 
 	@Resource ELuTongClient eLuTongClient;
+
+	@Resource
+	private ChengDuJianGuanClient chengDuJianGuanClient;
 	
 	
 	/**
@@ -228,6 +233,9 @@
 				if(200 != r.getCode()){
 					System.out.println(r.getMsg());
 				}
+
+				//推送成都监管
+				chengDuJianGuanClient.notificationStationInfo(site.getId());
 			});
 		}
 		return AjaxResult.success();
@@ -437,6 +445,8 @@
 				if(200 != r.getCode()){
 					System.out.println(r.getMsg());
 				}
+				//推送成都监管
+				chengDuJianGuanClient.notificationStationInfo(site.getId());
 			});
 		}
 		return AjaxResult.success();
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
index f7fcef5..bc52e49 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -23,6 +23,7 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
 import com.ruoyi.integration.api.feignClient.SendMessageClient;
 import com.ruoyi.integration.api.feignClient.TCECClient;
 import com.ruoyi.integration.api.model.QrCodeDelivery;
@@ -38,6 +39,10 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -121,8 +126,15 @@
         return pageInfo;
     }
 
-@Autowired
-private SiteMapper siteMapper;
+    @Autowired
+    private SiteMapper siteMapper;
+
+    @Resource
+    private ChengDuJianGuanClient chengDuJianGuanClient;
+
+
+
+
     /**
      * 添加充电枪
      * @param dto
@@ -155,8 +167,11 @@
         qrCodeDelivery.setCreate_time(new Date());
         qrCodeDelivery.setLast_time(new Date());
         sendMessageClient.qrCodeDelivery(qrCodeDelivery);
-        Site site = siteMapper.selectById(chargingPile.getSiteId());
-        // 推送充换电站信息
+        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+        threadPoolExecutor.execute(()->{
+            //推送成都监管
+            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+        });
         return AjaxResult.success();
     }
     
@@ -198,7 +213,11 @@
         qrCodeDelivery.setLast_time(new Date());
         sendMessageClient.qrCodeDelivery(qrCodeDelivery);
         tcecClient.superviseNotificationStationInfo(one.getSiteId());
-
+        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+        threadPoolExecutor.execute(()->{
+            //推送成都监管
+            chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+        });
         return AjaxResult.success();
     }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index 5466368..11d045d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -54,6 +54,9 @@
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -128,6 +131,9 @@
 
 	@Resource
 	private AppUserClient appUserClient;
+
+	@Resource
+	private ChengDuJianGuanClient chengDuJianGuanClient;
 	
 	
 
@@ -211,6 +217,11 @@
 			chargingPile.setIotdDeviceId(showDeviceResp.getDeviceId());
 		}
 		this.save(chargingPile);
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+		});
 		return AjaxResult.success();
 	}
 	
@@ -330,6 +341,12 @@
 			sendMessageClient.qrCodeDelivery(qrCodeDelivery);
 		}
 		tcecClient.superviseNotificationStationInfo(chargingPile.getSiteId());
+
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+		});
 		return AjaxResult.success();
 	}
 	
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
index 4fcecf1..fdf92c0 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
@@ -12,16 +12,16 @@
 import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
-import com.ruoyi.integration.api.vo.SiteVo;
-import com.ruoyi.integration.api.vo.TAccountingStrategyDetailVo;
-import com.ruoyi.integration.api.vo.TChargingPileVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
 import com.ruoyi.jianguan.chengdujianguan.enu.*;
-import com.ruoyi.jianguan.chengdujianguan.model.CDEquipmentInfo;
-import com.ruoyi.jianguan.chengdujianguan.model.CDStationInfo;
-import com.ruoyi.jianguan.chengdujianguan.model.ChargeFeeDetail;
-import com.ruoyi.jianguan.chengdujianguan.model.NotificationStationFee;
+import com.ruoyi.jianguan.chengdujianguan.model.*;
+import com.ruoyi.jianguan.model.ChargeDetail;
 import com.ruoyi.jianguan.model.ConnectorInfo;
+import com.ruoyi.jianguan.model.ConnectorStatusInfo;
+import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
@@ -29,10 +29,13 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @RestController
@@ -57,6 +60,14 @@
     @Resource
     private AccountingStrategyDetailClient accountingStrategyDetailClient;
 
+    @Resource
+    private ChargingOrderClient chargingOrderClient;
+
+    @Resource
+    private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient;
+    //成都、眉山、阿坝
+    private List<String> list = Arrays.asList("510100", "511400", "513200");
+
 
     /**
      * 充电站信息变化推送
@@ -66,7 +77,9 @@
     @PostMapping("/notificationStationInfo")
     public R notificationStationInfo(@RequestParam("siteId") Integer siteId){
         Site site = siteClient.getSiteByIds(Arrays.asList(siteId)).getData().get(0);
-        ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
+        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+            ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
+        }
         return R.ok();
     }
 
@@ -156,7 +169,7 @@
         stationInfo.setParkingLockFlag(site.getParkingLockFlag());
         stationInfo.setIsDemandResponse(1);
         stationInfo.setIsSupportOrderlyCharging(1);
-        stationInfo.setIsEnergyStorage();
+        stationInfo.setIsEnergyStorage(site.getIsEnergyStorage());
         stationInfo.setElectricityType(site.getElectricityType());
         stationInfo.setRatedPower(site.getRatedPower());
         stationInfo.setPeriodFee(site.getPeriodFee());
@@ -180,7 +193,7 @@
             cdEquipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode());
             cdEquipmentInfo.setManufacturerName(tChargingPile.getManufacturer());
             cdEquipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType());
-            cdEquipmentInfo.setEquipmentProductCode();
+            cdEquipmentInfo.setEquipmentProductCode(tChargingPile.getEquipmentProductCode());
             cdEquipmentInfo.setEquipmentName(tChargingPile.getName());
             cdEquipmentInfo.setConstructionTime(tChargingPile.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
             if(null != tChargingPile.getProductionDate()){
@@ -220,12 +233,12 @@
                     cdEquipmentInfo.setEquipmentStatus(5);
                     break;
             }
-            cdEquipmentInfo.setEquipmentPurpose();
+            cdEquipmentInfo.setEquipmentPurpose(tChargingPile.getEquipmentPurpose());
             cdEquipmentInfo.setEquipmentPower(tChargingPile.getRatedPower());
-            cdEquipmentInfo.setNewNationalStandard();
+            cdEquipmentInfo.setNewNationalStandard(tChargingPile.getNewNationalStandard());
             cdEquipmentInfo.setEquipmentLng(new BigDecimal(tChargingPile.getEquipmentLng()).setScale(6, RoundingMode.HALF_EVEN));
             cdEquipmentInfo.setEquipmentLat(new BigDecimal(tChargingPile.getEquipmentLat()).setScale(6, RoundingMode.HALF_EVEN));
-            cdEquipmentInfo.setVinFlag();
+            cdEquipmentInfo.setVinFlag(tChargingPile.getVinFlag());
             cdEquipmentInfo.setConnectorInfos(buildConnectorInfo(tChargingPile.getId(), chargingGunList));
             equipmentInfos.add(cdEquipmentInfo);
         }
@@ -277,27 +290,263 @@
 
     /**
      * 站点费率变化推送
-     * @param vo
+     * @param chargingPileId
      * @return
      */
     @PostMapping("/notificationStationFee")
-    public R notificationStationFee(@RequestBody NotificationStationFeeVo vo){
-        NotificationStationFee notificationStationFee = new NotificationStationFee();
-        notificationStationFee.setOperatorID("906171535");
-        notificationStationFee.setStationID(vo.getSiteCode());
-        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
-        List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(vo.getChargingPileCode()).getData();
-        for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
-            ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
-            chargeFeeDetail1.setEquipmentType(vo.getEquipmentType());
-            chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
-            chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
-            chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
-            chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
-            chargeFeeDetail.add(chargeFeeDetail1);
-            notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+    public R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId){
+        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingPileId).getData();
+        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+            NotificationStationFee notificationStationFee = new NotificationStationFee();
+            notificationStationFee.setOperatorID("906171535");
+            notificationStationFee.setStationID(site.getCode());
+            List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
+            List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(chargingPile.getCode()).getData();
+            for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
+                ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
+                chargeFeeDetail1.setEquipmentType(chargingPile.getType());
+                chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
+                chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
+                chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
+                chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
+                chargeFeeDetail.add(chargeFeeDetail1);
+                notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+            }
+            ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
         }
-        ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
+        return R.ok();
+    }
+
+
+    /**
+     * 设备状态变化推送
+     * @param chargingGunId
+     * @return
+     */
+    @PostMapping("/notificationStationStatus")
+    public R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId){
+        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingGunId).getData();
+        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+            ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
+            connectorStatusInfo.setOperatorID("906171535");
+            connectorStatusInfo.setEquipmentOwnerID("906171535");
+            connectorStatusInfo.setStationID(site.getCode());
+            connectorStatusInfo.setEquipmentID(chargingPile.getCode());
+            connectorStatusInfo.setEquipmentClassification(1);
+            connectorStatusInfo.setConnectorID(chargingGun.getFullNumber());
+            switch (chargingGun.getStatus()){
+                case 1:
+                    connectorStatusInfo.setStatus(0);
+                    break;
+                case 2:
+                    connectorStatusInfo.setStatus(1);
+                    break;
+                case 3:
+                    connectorStatusInfo.setStatus(2);
+                    break;
+                case 4:
+                    connectorStatusInfo.setStatus(3);
+                    break;
+                case 5:
+                    connectorStatusInfo.setStatus(3);
+                    break;
+                case 6:
+                    connectorStatusInfo.setStatus(4);
+                    break;
+                case 7:
+                    connectorStatusInfo.setStatus(7);
+                    break;
+            }
+            connectorStatusInfo.setParkStatus(0);
+            connectorStatusInfo.setLookStatus(0);
+            ChengDuJianGuanUtil.notificationStationStatus(redisTemplate, connectorStatusInfo);
+        }
+
+        return R.ok();
+    }
+
+
+    /**
+     * 设备充电中状态变化推送
+     * @param vo
+     * @return
+     */
+    @PostMapping("/notificationConnectorChargeStatus")
+    public R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo){
+        TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
+        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+            TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
+            ConnectorChargeStatusInfo connectorChargeStatusInfo = new ConnectorChargeStatusInfo();
+            connectorChargeStatusInfo.setOperatorID("906171535");
+            connectorChargeStatusInfo.setEquipmentOwnerID("906171535");
+            connectorChargeStatusInfo.setStationID(site.getCode());
+            connectorChargeStatusInfo.setEquipmentID(chargingPile.getCode());
+            connectorChargeStatusInfo.setConnectorID(chargingGun.getFullNumber());
+            connectorChargeStatusInfo.setStartChargeSeq(chargingOrder.getCode());
+            switch (chargingGun.getStatus()){
+                case 1:
+                    connectorChargeStatusInfo.setConnectorStatus(1);
+                    break;
+                case 2:
+                    connectorChargeStatusInfo.setConnectorStatus(1);
+                    break;
+                case 3:
+                    connectorChargeStatusInfo.setConnectorStatus(2);
+                    break;
+                case 4:
+                    connectorChargeStatusInfo.setConnectorStatus(3);
+                    break;
+                case 5:
+                    connectorChargeStatusInfo.setConnectorStatus(2);
+                    break;
+                case 6:
+                    connectorChargeStatusInfo.setConnectorStatus(4);
+                    break;
+                case 7:
+                    connectorChargeStatusInfo.setConnectorStatus(255);
+                    break;
+            }
+            switch (chargingOrder.getStatus()){
+                case -1:
+                    connectorChargeStatusInfo.setOrderStatus(7);
+                    break;
+                case 0:
+                    connectorChargeStatusInfo.setOrderStatus(7);
+                    break;
+                case 1:
+                    connectorChargeStatusInfo.setOrderStatus(1);
+                    break;
+                case 2:
+                    connectorChargeStatusInfo.setOrderStatus(1);
+                    break;
+                case 3:
+                    connectorChargeStatusInfo.setOrderStatus(2);
+                    break;
+                case 4:
+                    connectorChargeStatusInfo.setOrderStatus(3);
+                    break;
+                case 5:
+                    connectorChargeStatusInfo.setOrderStatus(4);
+                    break;
+            }
+            connectorChargeStatusInfo.setCurrentA(chargingOrder.getCurrent());
+            connectorChargeStatusInfo.setVoltageA(chargingOrder.getVoltage());
+            connectorChargeStatusInfo.setSoc(chargingOrder.getTotalElectricity());
+            connectorChargeStatusInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            connectorChargeStatusInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            connectorChargeStatusInfo.setPushTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            String key = "CHENGDU_JIANGUAN:" + chargingOrder.getCode();
+            Object o = redisTemplate.opsForValue().get(key);
+            String lastPushTime = null;
+            if(null == o){
+                lastPushTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            }else{
+                lastPushTime = o.toString();
+            }
+            connectorChargeStatusInfo.setLastPushTime(lastPushTime);
+            connectorChargeStatusInfo.setTotalPower(chargingOrder.getElectricity());
+            connectorChargeStatusInfo.setElecMoney(chargingOrder.getElectrovalence());
+            connectorChargeStatusInfo.setSeviceMoney(chargingOrder.getServiceCharge());
+            connectorChargeStatusInfo.setTotalMoney(chargingOrder.getPaymentAmount());
+            connectorChargeStatusInfo.setSoc1(chargingOrder.getTotalElectricity());
+            ChengDuJianGuanUtil.notificationConnectorChargeStatus(redisTemplate, connectorChargeStatusInfo);
+            redisTemplate.opsForValue().set(key, connectorChargeStatusInfo.getPushTime(), 5, TimeUnit.DAYS);
+        }
+        return R.ok();
+    }
+
+
+    /**
+     * 订单信息推送
+     * @param vo
+     * @return
+     */
+    @PostMapping("/notificationOrderInfo")
+    public R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo){
+        TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
+        TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+        Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+        if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+            TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
+            CDOrderInfo orderInfo = new CDOrderInfo();
+            orderInfo.setOperatorID("906171535");
+            orderInfo.setEquipmentOwnerID("906171535");
+            orderInfo.setStationID(site.getCode());
+            orderInfo.setEquipmentID(chargingPile.getCode());
+            orderInfo.setConnectorID(chargingGun.getFullNumber());
+            orderInfo.setEquipmentClassification(1);
+            orderInfo.setStartChargeSeq(chargingOrder.getCode());
+            orderInfo.setUserChargeType(1);
+            orderInfo.setMoney(chargingOrder.getPaymentAmount());
+            orderInfo.setElectMoney(chargingOrder.getElectrovalence());
+            orderInfo.setServiceMoney(chargingOrder.getServiceCharge());
+            orderInfo.setElect(chargingOrder.getElectricity());
+            orderInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            orderInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            orderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
+            orderInfo.setPayChannel(chargingOrder.getRechargePaymentType() == 2 ? 1 : 2);
+            switch (chargingOrder.getEndMode()){
+                case 0:
+                    orderInfo.setStopReason(3);
+                    break;
+                case 1:
+                    orderInfo.setStopReason(0);
+                    break;
+                case 2:
+                    orderInfo.setStopReason(2);
+                    break;
+                case 3:
+                    orderInfo.setStopReason(1);
+                    break;
+            }
+            orderInfo.setPower(chargingOrder.getPower());
+            if(null == chargingOrder.getStartTime()){
+                orderInfo.setChargeLast(0L);
+            }else{
+                Long time = chargingOrder.getEndTime().toEpochSecond(ZoneOffset.UTC) - chargingOrder.getStartTime().toEpochSecond(ZoneOffset.UTC);
+                orderInfo.setChargeLast(time);
+            }
+            orderInfo.setMeterValueStart(new BigDecimal(0));
+            orderInfo.setMeterValueEnd(new BigDecimal(0));
+            orderInfo.setPushTimeStamp(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+            List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
+            List<ChargeDetail> chargeDetails = new ArrayList<>();
+            LocalDateTime startTime = chargingOrder.getStartTime();
+            LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
+            String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            for (TChargingOrderAccountingStrategy datum : data) {
+                ChargeDetail chargeDetail = new ChargeDetail();
+                if(s_format.equals(e_format)){
+                    chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
+                    chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
+                }else{
+                    String substring = datum.getEndTime().substring(0, datum.getEndTime().indexOf(":"));
+                    if(Integer.valueOf(substring) > 12){
+                        chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
+                        chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
+                    }else{
+                        chargeDetail.setDetailStartTime(e_format + " " + datum.getStartTime() + ":00");
+                        chargeDetail.setDetailEndTime(e_format + " " + datum.getEndTime() + ":59");
+                    }
+                }
+                chargeDetail.setElecPrice(datum.getElectrovalence());
+                chargeDetail.setSevicePrice(datum.getServiceCharge());
+                chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_EVEN));
+                chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice());
+                chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice());
+
+                chargeDetails.add(chargeDetail);
+            }
+            orderInfo.setChargeDetails(chargeDetails);
+            ChengDuJianGuanUtil.notificationOrderInfo(redisTemplate, orderInfo);
+        }
         return R.ok();
     }
 }
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
index d75c096..3083690 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
@@ -18,6 +18,7 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 public class ChengDuJianGuanUtil {
@@ -132,21 +133,21 @@
 
 
 
-    public static void main(String[] args) {
-        NotificationStationFee notificationStationFee = new NotificationStationFee();
-        notificationStationFee.setOperatorID(OperatorID);
-        notificationStationFee.setStationID("241231001");
-        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
-        ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
-        chargeFeeDetail1.setEquipmentType(1);
-        chargeFeeDetail1.setStartTime("00:00");
-        chargeFeeDetail1.setEndTime("23:59");
-        chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
-        chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
-        chargeFeeDetail.add(chargeFeeDetail1);
-        notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
-        ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
-    }
+//    public static void main(String[] args) {
+//        NotificationStationFee notificationStationFee = new NotificationStationFee();
+//        notificationStationFee.setOperatorID(OperatorID);
+//        notificationStationFee.setStationID("241231001");
+//        List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
+//        ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
+//        chargeFeeDetail1.setEquipmentType(1);
+//        chargeFeeDetail1.setStartTime("00:00");
+//        chargeFeeDetail1.setEndTime("23:59");
+//        chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
+//        chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
+//        chargeFeeDetail.add(chargeFeeDetail1);
+//        notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+//        ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
+//    }
 
 
 //    public static void main(String[] args) {
@@ -237,10 +238,10 @@
      */
     public static String getToken(RedisTemplate redisTemplate) {
         try {
-//            Object o = redisTemplate.opsForValue().get("LLTOKEN");
-//            if(null != o){
-//                return o.toString();
-//            }
+            Object o = redisTemplate.opsForValue().get("LLTOKEN");
+            if(null != o){
+                return o.toString();
+            }
             // 请求data
             Map<String, String> data = new HashMap<>();
             data.put("OperatorID", OperatorID);
@@ -278,7 +279,7 @@
                 Map<String, String> resultMap = (Map<String, String>) JSON.parse(dataStr);
                 String accessToken = jsonObject.getString("AccessToken");
                 Long tokenAvailableTime = jsonObject.getLong("TokenAvailableTime");
-//                redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
+                redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
                 return accessToken;
             }
         } catch (Exception e) {
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
index 20c74a0..159660f 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
@@ -97,7 +97,7 @@
      * 充电时长 秒
      */
     @JsonProperty("ChargeLast")
-    private Integer chargeLast;
+    private Long chargeLast;
     /**
      * 电表总起值
      */
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index ff3a2bc..9ddfb48 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -34,6 +34,7 @@
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.api.vo.ChargingOrderVo;
 import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
 import com.ruoyi.integration.api.vo.StartChargeResult;
 import com.ruoyi.order.api.dto.SettlementConfirmAdd;
 import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
@@ -232,6 +233,9 @@
 	
 	@Resource
 	private ChargingMessageClient chargingMessageClient;
+
+	@Resource
+	private ChengDuJianGuanClient chengDuJianGuanClient;
 	
 	
 	/**
@@ -769,6 +773,17 @@
 		
 		log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
 		sendMessageClient.platformStartCharging(platformStartCharging);
+
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+			vo.setOrderCode(chargingOrder.getCode());
+			vo.setChargingGunId(chargingOrder.getChargingGunId());
+			chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+		});
+
+
 //		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
 //		Long id = chargingOrder.getId();
 //		//执行5分钟的定时任务检测
@@ -832,6 +847,7 @@
 				chargingOrder.setStartTime(LocalDateTime.now());
 			}
 			this.updateById(chargingOrder);
+
 			if (chargingOrder.getStatus() == 3) {
 				//推送监管平台订单状态
 				new Thread(() -> {
@@ -846,6 +862,14 @@
 			if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
 				tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 			}
+			ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+			threadPoolExecutor.execute(()->{
+				//推送成都监管
+				NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+				vo.setOrderCode(chargingOrder.getCode());
+				vo.setChargingGunId(chargingOrder.getChargingGunId());
+				chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+			});
 			return true;
 		} else {
 			Integer counter = boot_failed_map.get(code);
@@ -880,6 +904,14 @@
 			if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
 				tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 			}
+			ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+			threadPoolExecutor.execute(()->{
+				//推送成都监管
+				NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+				vo.setOrderCode(chargingOrder.getCode());
+				vo.setChargingGunId(chargingOrder.getChargingGunId());
+				chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+			});
 			return true;
 		}
 	}
@@ -1305,7 +1337,14 @@
 		if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
 			tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
 		}
-		
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+			vo.setOrderCode(order.getCode());
+			vo.setChargingGunId(order.getChargingGunId());
+			chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+		});
 		return AjaxResult.success();
 	}
 	
@@ -2611,6 +2650,16 @@
 					}
 				}).start();
 			}
+			ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+			TChargingOrder finalChargingOrder1 = chargingOrder;
+			threadPoolExecutor.execute(()->{
+				//推送成都监管
+				NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+				statusVo.setOrderCode(finalChargingOrder1.getCode());
+				statusVo.setChargingGunId(finalChargingOrder1.getChargingGunId());
+				chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+				chengDuJianGuanClient.notificationOrderInfo(statusVo);
+			});
 			
 			//开始将优惠券优惠的金额添加到明细中
 			BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
@@ -2982,6 +3031,18 @@
 					chargingOrderRefundService.save(chargingOrderRefund);
 					
 				}
+			}
+
+			if(5 == tChargingOrder.getStatus()){
+				ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+				threadPoolExecutor.execute(()->{
+					//推送成都监管
+					NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+					statusVo.setOrderCode(tChargingOrder.getCode());
+					statusVo.setChargingGunId(tChargingOrder.getChargingGunId());
+					chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+					chengDuJianGuanClient.notificationOrderInfo(statusVo);
+				});
 			}
 		}
 		if (payOrderQueryDto.getType() == 2) {
@@ -4137,6 +4198,14 @@
 			//推送三方平台订单状态
 			tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 		}
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+			statusVo.setOrderCode(chargingOrder.getCode());
+			statusVo.setChargingGunId(chargingOrder.getChargingGunId());
+			chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+		});
 		return R.ok();
 	}
 	
@@ -4186,6 +4255,14 @@
 			log.info("【" + code1 + "】三方平台请求停止充电发起消息结束");
 			log.info(platformStopCharging.toString());
 		});
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+		threadPoolExecutor.execute(()->{
+			//推送成都监管
+			NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+			statusVo.setOrderCode(chargingOrder.getCode());
+			statusVo.setChargingGunId(chargingOrder.getChargingGunId());
+			chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+		});
 		return R.ok();
 	}
 	
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index eb84ab1..533d71e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -20,11 +20,13 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.integration.api.feignClient.ChargingMessageClient;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
 import com.ruoyi.integration.api.feignClient.TCECClient;
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
 import com.ruoyi.integration.api.model.TransactionRecord;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.api.vo.ChargingOrderVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
 import com.ruoyi.order.api.model.*;
 import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo;
 import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
@@ -63,6 +65,9 @@
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -129,6 +134,9 @@
 
     @Resource
     private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
+
+    @Resource
+    private ChengDuJianGuanClient chengDuJianGuanClient;
 
 
     //十分钟循环执行的定时任务
@@ -620,6 +628,17 @@
             if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
                 tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
             }
+            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+            TChargingOrder finalOrder = order;
+            threadPoolExecutor.execute(()->{
+                //推送成都监管
+                NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+                statusVo.setOrderCode(finalOrder.getCode());
+                statusVo.setChargingGunId(finalOrder.getChargingGunId());
+                chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+                chengDuJianGuanClient.notificationOrderInfo(statusVo);
+            });
+
 
             //添加积分
             if (1 == order.getOrderSource()) {

--
Gitblit v1.7.1