From 8b1e79a91c7430aded38a05e5f065522f8396976 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 30 一月 2026 19:19:35 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java | 5
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java | 6
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 12
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/OperatorData.java | 64 ++
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/PageInfo.java | 24
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeRecord.java | 48 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/StationInfos.java | 116 +++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 5
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 10
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeOrder.java | 59 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorInfo.java | 42 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/SupportOrder.java | 119 +++
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/constant/ChargePileInterface.java | 28
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeDetail.java | 26
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/TContent.java | 47 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStartResponse.java | 43 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/controller/ChargingPileInfoController.java | 608 ++++++++++++++++++++
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorStatusInfos.java | 24
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java | 6
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java | 5
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStatus.java | 61 ++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 7
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/EquipmentInfos.java | 49 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java | 10
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/ChargePileHttpUtil.java | 296 +++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 6
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/PageInfo.java | 26
27 files changed, 1,745 insertions(+), 7 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
index 21909bc..04f91a9 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -33,6 +33,11 @@
return new ChargingGunClient() {
@Override
+ public R<Integer> addGunTemp(TChargingGun gun) {
+ return R.fail("添加临时枪数据失败:" + throwable.getMessage());
+ }
+
+ @Override
public R<List<TChargingGun>> getAllGun() {
return R.fail("获取数据失败:" + throwable.getMessage());
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
index 1341ab8..5e4ec62 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -29,6 +29,11 @@
return new ChargingPileClient() {
@Override
+ public R<Integer> addPileTemp(TChargingPile chargingPile) {
+ return R.fail("添加临时桩数据失败:"+throwable.getMessage());
+ }
+
+ @Override
public R<List<TChargingPile>> getChargingPileBySiteId(Integer siteId) {
return R.fail("通过站点id获取充电桩列表失败:"+throwable.getMessage());
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
index daf0d37..fc41636 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -31,6 +31,11 @@
return new SiteClient() {
@Override
+ public R addSiteTemp(Site site) {
+ return R.fail("新增临时站点失败:" + throwable.getMessage());
+ }
+
+ @Override
public R<List<TChargingPile>> getPileListBySiteId(Integer siteId) {
return R.fail("根据站点id 查询所有充电桩:" + throwable.getMessage());
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
index bbbc41f..2a2535b 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -20,6 +20,13 @@
@FeignClient(contextId = "ChargingGunClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = ChargingGunFallbackFactory.class)
public interface ChargingGunClient {
/**
+ * 新增临时枪
+ * @return
+ */
+ @PostMapping("/t-charging-gun/addGunTemp")
+ @ResponseBody
+ R<Integer> addGunTemp(@RequestBody TChargingGun gun);
+ /**
* 获取所有枪
* @return
*/
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
index d22aa62..0c3a5f8 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -19,6 +19,12 @@
*/
@FeignClient(contextId = "ChargingPileClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = ChargingPileFallbackFactory.class)
public interface ChargingPileClient {
+ /**
+ * 临时添加充电桩
+ */
+ @PostMapping(value = "/t-charging-pile/addPileTemp")
+ @ResponseBody
+ R<Integer> addPileTemp(@RequestBody TChargingPile chargingPile);
/**
* 管理后台-通过站点id获取充电桩列表 不分页
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
index 4a98941..e811ad0 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
@@ -8,6 +8,8 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.page.PageInfo;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.java.Log;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@@ -19,9 +21,11 @@
*/
@FeignClient(contextId = "SiteClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = SiteFallbackFactory.class)
public interface SiteClient {
+ @ResponseBody
+ @PostMapping("/site/addSiteTemp")
+ public R<Integer> addSiteTemp(@RequestBody Site site);
@GetMapping("/site/getPileListBySiteId/{siteId}")
public R<List<TChargingPile>> getPileListBySiteId(@PathVariable("siteId")Integer siteId);
-
/**
* 根据id集合获取数据
* @param ids
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index d574202..4d93f85 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -113,7 +113,15 @@
private AppUserClient appUserClient;
@Resource
private AppUserVipDetailClient vipDetailClient;
-
+ // 远程新增临时站点
+ @ResponseBody
+ @PostMapping("/addSiteTemp")
+ @ApiOperation(value = "添加站点", tags = {"管理后台-站点管理"})
+ @Log(title = "【站点管理】添加站点", businessType = BusinessType.INSERT)
+ public R addSiteTemp(@RequestBody Site site){
+ siteService.save(site);
+ return R.ok(site.getId());
+ }
/**
* 根据站点id 查询所有充电桩
* @param siteId
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 9b93c6e..6308748 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -67,11 +67,21 @@
@Autowired
private FileUploadConfig fileUploadConfig;
-
+ /**
+ * 新增临时枪
+ * @return
+ */
+ @PostMapping("/addGunTemp")
+ @ResponseBody
+ R<Integer> addGunTemp(@RequestBody TChargingGun gun){
+ chargingGunService.save(gun);
+ return R.ok(gun.getId());
+ }
/**
* 查询所有枪
*/
@PostMapping(value = "/getAllGun")
+ @ResponseBody
public R<List<TChargingGun>> getAllGun() {
return R.ok(chargingGunService.list());
}
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 9deb0d2..a4caff2 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
@@ -101,7 +101,15 @@
this.chargingPileService = chargingPileService;
this.chargingGunService = chargingGunService;
}
-
+ /**
+ * 临时添加充电桩
+ */
+ @PostMapping(value = "/addPileTemp")
+ @ResponseBody
+ public R<Integer> addPileTemp(@RequestBody TChargingPile chargingPile){
+ chargingPileService.save(chargingPile);
+ return R.ok(chargingPile.getId());
+ }
/**
* 查询充电桩列表
*/
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java
index 74f89d8..c9cf681 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java
@@ -44,9 +44,9 @@
*/
public String getToken(){
String token = redisService.getCacheObject(ChargePileInterface.TOKEN_KEY);
- if(StringUtils.hasLength(token)){
- return token;
- }
+// if(StringUtils.hasLength(token)){
+// return token;
+// }
JSONObject jsonObject = new JSONObject();
jsonObject.put("OperatorID", OperatorID);
jsonObject.put("OperatorSecret", OperatorSecret);
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/constant/ChargePileInterface.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/constant/ChargePileInterface.java
new file mode 100644
index 0000000..ff0727a
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/constant/ChargePileInterface.java
@@ -0,0 +1,28 @@
+package com.ruoyi.jianguan.constant;
+
+public class ChargePileInterface {
+ public static final String TOKEN_KEY = "charge_token:";
+ public static final String OperatorID = "734810353";
+ // 获取token
+ public static final String QUERY_TOKEN = "http://tld.itsou.top/evcs/tld/query_token";
+ // 查询充电站信息
+ public static final String QUERY_STATIONS_INFO = "http://tld.itsou.top/evcs/tld/query_stations_info";
+ public static final String QUERY_ORDER_LIST = "http://tld.itsou.top/evcs/tld/query_finish_orders";
+ // 设备接口状态查询
+ public static final String QUERY_STATION_STATUS = "http://tld.itsou.top/evcs/tld/query_station_status";
+ // 查询业务策略信息
+ public static final String QUERY_EQUIP_BUSINESS_POLICY = "http://tld.itsou.top/evcs/tld/query_equip_business_policy";
+ // 请求设备认证
+ public static final String QUERY_EQUIP_AUTH = "http://tld.itsou.top/evcs/tld/query_equip_auth";
+ // 请求启动充电
+ public static final String QUERY_START_CHARGE = "http://tld.itsou.top/evcs/tld/query_start_charge";
+ // 查询充电状态
+ public static final String QUERY_EQUIP_CHARGE_STATUS = "http://tld.itsou.top/evcs/tld/query_equip_charge_status";
+ // 请求停止充电
+ public static final String QUERY_STOP_CHARGE = "http://tld.itsou.top/evcs/tld/query_stop_charge";
+ // 自助备案车牌号
+ public static final String QUERY_MERCHANT_VEHICLES = "http://tld.itsou.top/evcs/tld/query_merchant_vehicles";
+ // 获取商户企业账户余额
+ public static final String QUERY_CASHBALANCE = "http://tld.itsou.top/evcs/tld/query_cashbalance";
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/controller/ChargingPileInfoController.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/controller/ChargingPileInfoController.java
new file mode 100644
index 0000000..96c8dc4
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/controller/ChargingPileInfoController.java
@@ -0,0 +1,608 @@
+package com.ruoyi.jianguan.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.jianguan.dto.*;
+import com.ruoyi.jianguan.service.ISiteService;
+import com.ruoyi.jianguan.service.TChargingGunService;
+import com.ruoyi.jianguan.service.TChargingPileService;
+import com.ruoyi.jianguan.util.ChargePileHttpUtil;
+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.domain.Region;
+import com.ruoyi.other.api.feignClient.OtherClient;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 站桩枪、订单 临时数据接口
+ *
+ * @author stylefeng
+ * @Date 2018/7/20 23:39
+ */
+@RestController
+@RequestMapping("/chargingPileInfo")
+@Slf4j
+public class ChargingPileInfoController {
+ @Autowired
+ private ChargePileHttpUtil chargePileHttpUtil;
+
+ @Autowired
+ private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient;
+ @Autowired
+ private ChargingGunClient chargingGunClient;
+ @Autowired
+ private ChargingPileClient chargingPileClient;
+ @Autowired
+ private SiteClient siteClient;
+ @Autowired
+ private ChargingOrderClient chargingOrderClient;
+ @Autowired
+ private OtherClient otherClient;
+ private static final double EARTH_RADIUS = 6371.0; // 地球半径,单位为千米
+
+ /**
+ * 计算两点之间的距离,单位为千米
+ *
+ * @param lat1 第一个点的纬度
+ * @param lon1 第一个点的经度
+ * @param lat2 第二个点的纬度
+ * @param lon2 第二个点的经度
+ * @return 两点之间的距离,单位为千米
+ */
+ public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
+ double dLat = Math.toRadians(lat2 - lat1);
+ double dLon = Math.toRadians(lon2 - lon1);
+
+ lat1 = Math.toRadians(lat1);
+ lat2 = Math.toRadians(lat2);
+
+ double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
+ Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
+ double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+
+ return EARTH_RADIUS * c;
+ }
+
+ /**
+ * 司机端-获取充电桩列表
+ */
+ @ResponseBody
+ @PostMapping("/orderList")
+ @ApiOperation(value = "获取充电订单", tags = {"司机端-获取充电订单"}, notes = "")
+ public R<String> chargingPileList(){
+ List<TChargingGun> chargingGun = chargingGunClient.getAllGun().getData();
+
+ List<ChargeOrder> result = getOrderList();
+ List<TChargingOrder> orders = new ArrayList<>();
+
+ List<TChargingOrderAccountingStrategy> accountingStrategies = new ArrayList<>();
+ // 封装订单数据
+ for (ChargeOrder chargeOrder : result) {
+ TChargingOrder chargingOrder = new TChargingOrder();
+ chargingOrder.setOrderType(1);
+ chargingOrder.setOrderClassification(1);
+// chargingOrder.setAppUserId(1L);
+// chargingOrder.setAppUserCarId(1L);
+ chargingOrder.setRefundAmount(new BigDecimal(chargeOrder.getTotalMoney()));
+ chargingOrder.setRechargeSerialNumber("4200002747202505247686188393");
+ chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+ chargingOrder.setVipDiscount(BigDecimal.ZERO);
+ chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
+ chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+ chargingOrder.setCommissionAmount(BigDecimal.ZERO);
+ chargingOrder.setSharingAmount(BigDecimal.ZERO);
+ chargingOrder.setDelFlag(false);
+ chargingOrder.setNeedElec(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setStartSoc(BigDecimal.ZERO);
+ chargingOrder.setEndSoc(new BigDecimal("100"));
+ chargingOrder.setPower(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setElectricity(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setVoltage(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setCurrent(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setChargingPower(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setChargingCapacity(new BigDecimal(chargeOrder.getTotalPower()));
+ chargingOrder.setCode(chargeOrder.getStartChargeSeq());
+ chargingOrder.setOrderSource(2);
+ chargingOrder.setOperatorId(999);
+ chargingOrder.setTripartitePlatformName("途来电");
+ chargingOrder.setStartChargeSeq(chargeOrder.getStartChargeSeq());
+ chargingOrder.setSourceName("途来电");
+ chargingOrder.setStartTime(DateUtils.stringToLocalDateTime(chargeOrder.getStartTime()));
+ chargingOrder.setEndTime(DateUtils.stringToLocalDateTime(chargeOrder.getEndTime()));
+ chargingOrder.setStatus(5);
+ chargingOrder.setEndMode(1);
+ chargingOrder.setElectrovalence(new BigDecimal(chargeOrder.getElecMoney()));
+ chargingOrder.setServiceCharge(new BigDecimal(chargeOrder.getSeviceMoney()));
+ chargingOrder.setTotalElectricity(new BigDecimal(chargeOrder.getElecMoney()));
+ chargingOrder.setPaymentAmount(new BigDecimal(chargeOrder.getTotalMoney()));
+ chargingOrder.setRechargePaymentType(1);
+ chargingOrder.setRechargePaymentStatus(2);
+ chargingOrder.setChargeAmount(new BigDecimal(chargeOrder.getTotalMoney()));
+ chargingOrder.setOrderAmount(new BigDecimal(chargeOrder.getTotalMoney()));
+ chargingOrder.setResidualAmount(BigDecimal.ZERO);
+ chargingOrder.setPaymentAmount(new BigDecimal(chargeOrder.getTotalMoney()));
+ chargingOrder.setPayTime(LocalDateTime.now());
+ // 通过枪编号查询枪
+ TChargingGun tChargingGun = chargingGun.stream().filter(e -> e.getConnectorID().equals(chargeOrder.getConnectorID()))
+ .findFirst().orElse(null);
+ if(Objects.nonNull(tChargingGun)){
+ chargingOrder.setChargingGunId(tChargingGun.getId());
+ chargingOrder.setChargingPileId(tChargingGun.getChargingPileId());
+ chargingOrder.setSiteId(tChargingGun.getSiteId());
+ }else{
+ continue;
+ }
+ R<Long> orderIdR = chargingOrderClient.addChargingOrder(chargingOrder);
+ if(orderIdR.getCode() == 200){
+ // 充电明细
+ List<com.ruoyi.jianguan.dto.ChargeDetail> chargeDetails = chargeOrder.getChargeDetails();
+ if(!CollectionUtils.isEmpty(chargeDetails)){
+ List<TChargingOrderAccountingStrategy> accountingStrategyList = new ArrayList<>();
+ for (ChargeDetail chargeDetail : chargeDetails) {
+ TChargingOrderAccountingStrategy accountingStrategy = new TChargingOrderAccountingStrategy();
+ accountingStrategy.setChargingOrderId(orderIdR.getData());
+ accountingStrategy.setAccountingStrategyDetailId(232);
+ accountingStrategy.setType(1);
+ accountingStrategy.setStartTime(chargeDetail.getDetailStartTime());
+ accountingStrategy.setEndTime(chargeDetail.getDetailEndTime());
+ accountingStrategy.setElectrovalence(chargeDetail.getElecPrice());
+ accountingStrategy.setServiceCharge(chargeDetail.getSevicePrice());
+ accountingStrategy.setCostServiceCharge(chargeDetail.getDetailSeviceMoney());
+ accountingStrategy.setChargingCapacity(chargeDetail.getDetailPower());
+ accountingStrategy.setPeriodElectricPrice(chargeDetail.getDetailElecMoney());
+ accountingStrategy.setCouponDiscountAmount(BigDecimal.ZERO);
+ accountingStrategy.setVipDiscountAmount(BigDecimal.ZERO);
+ accountingStrategy.setPeriodServicePrice(chargeDetail.getDetailSeviceMoney());
+ accountingStrategy.setPeriodOriginalServicePrice(chargeDetail.getDetailSeviceMoney());
+ accountingStrategy.setCreateTime(LocalDateTime.now());
+ accountingStrategyList.add(accountingStrategy);
+ }
+ chargingOrderAccountingStrategyClient.addChargingOrderAccountingStrategy(accountingStrategyList);
+ }
+ }
+ }
+
+ return R.ok();
+ }
+
+ @ResponseBody
+ @PostMapping("/chargingPileList")
+ @ApiOperation(value = "获取充电桩列表", tags = {"获取充电桩列表"}, notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "电站类型 0=不限 1=公共 50=个人 100=公交 101=环卫(专用) 102=物流(专用) 103=出租车(专用) 255=其他", name = "type", required = false, dataType = "string"),
+ @ApiImplicitParam(value = "电站距离 不限=0 1km内=1 2km内=2 3km内=3 5km内=4 10km内=5 50km内=6 100km内=7 ", name = "distance", required = false, dataType = "int"),
+ @ApiImplicitParam(value = "设备状态 不限=0 1=只看空闲", name = "status", required = false, dataType = "int"),
+ @ApiImplicitParam(value = "电站名称/目标地址", name = "name", required = false, dataType = "string"),
+ @ApiImplicitParam(value = "pageNo", name = "pageNo", required = false, dataType = "string"),
+ @ApiImplicitParam(value = "pageSize", name = "pageSize", required = false, dataType = "string"),
+ @ApiImplicitParam(value = "lon", name = "经度", required = false, dataType = "string"),
+ @ApiImplicitParam(value = "lat", name = "纬度", required = false, dataType = "string"),
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ })
+ public R<String> chargingPileList(String type, Integer distance,
+ Integer status,
+ String name,
+ String lon,
+ String lat,
+ Integer pageNo, Integer pageSize){
+ PageInfo pageInfo = new PageInfo();
+ List<StationInfos> result = getStationInfos();
+ // 电站类型
+ if (StringUtils.hasLength(type) && (!type.equals("0"))){
+ List<Integer> list = Arrays.stream(type.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+ result = result.stream().filter(item -> list.contains(item.getStationType())).collect(Collectors.toList());
+ }
+ // 电站名称/目标地址
+ if(StringUtils.hasLength(name)){
+ result = result.stream().filter(item -> item.getStationName().contains(name) ||
+ item.getAddress().contains(name)).collect(Collectors.toList());
+ }
+
+ for (StationInfos stationInfo : result) {
+ if (StringUtils.hasLength(lon)){
+ double v = calculateDistance(
+ stationInfo.getStationLat(),
+ stationInfo.getStationLng(),
+ Double.parseDouble(lat),
+ Double.parseDouble(lon)
+ );
+ stationInfo.setDistance(String.valueOf(Math.abs(v)));
+ }else {
+ stationInfo.setDistance("0");
+ }
+
+ List<EquipmentInfos> equipmentInfos = stationInfo.getEquipmentInfos();
+ int a = 0;
+ int b = 0;
+ for (EquipmentInfos equipmentInfo : equipmentInfos) {
+ if (equipmentInfo.getEquipmentType()==1){
+ a++;
+ }
+ if (equipmentInfo.getEquipmentType()==2){
+ b++;
+ }
+ }
+ stationInfo.setFastTotal(a);
+ stationInfo.setSnowTotal(b);
+ stationInfo.setFast(a);
+ stationInfo.setSnow(b);
+ }
+ if(Objects.nonNull(distance) && distance != 0){
+ switch (distance){
+ case 1:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 1).collect(Collectors.toList());
+ break;
+ case 2:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 2).collect(Collectors.toList());
+ break;
+ case 3:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 3).collect(Collectors.toList());
+ break;
+ case 4:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 5).collect(Collectors.toList());
+ break;
+ case 5:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 10).collect(Collectors.toList());
+ break;
+ case 6:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 50).collect(Collectors.toList());
+ break;
+ case 7:
+ result = result.stream().filter(item -> Double.parseDouble(item.getDistance()) <= 100).collect(Collectors.toList());
+ break;
+ }
+ }
+ List<String> stationIDs = result.stream()
+ .map(StationInfos::getStationID)
+ .collect(Collectors.toList());
+ String obj = chargePileHttpUtil.queryStationStatus(stationIDs);
+ JSONObject jsonObject1 = JSONObject.parseObject(obj);
+ JSONArray stationStatusInfos = jsonObject1.getJSONArray("StationStatusInfos");
+ for (StationInfos stationInfo : result) {
+ for (EquipmentInfos equipmentInfo : stationInfo.getEquipmentInfos()) {
+ for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) {
+ for (Object stationStatusInfo : stationStatusInfos) {
+ JSONObject jsonObject2 = (JSONObject) stationStatusInfo;
+ String stationID = jsonObject2.getString("StationID");
+ JSONArray connectorStatusInfos = jsonObject2.getJSONArray("ConnectorStatusInfos");
+ if (connectorStatusInfos != null) {
+ for (Object connectorStatusInfo : connectorStatusInfos) {
+ JSONObject jsonObject3 = (JSONObject) connectorStatusInfo;
+ String status1 = jsonObject3.getString("ConnectorID");
+ if (connectorInfo.getConnectorID().equals(status1)){
+ Integer status2 = jsonObject3.getInteger("Status");
+ if (status2==1){
+ connectorInfo.setStatus(1);
+ }else {
+ connectorInfo.setStatus(2);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ // 电站状态
+ if (Objects.nonNull(status) && status == 1) {
+ Iterator<StationInfos> iterator1 = result.iterator();
+ while (iterator1.hasNext()) {
+ StationInfos next = iterator1.next();
+ for (Object stationStatusInfo : stationStatusInfos) {
+ JSONObject jsonObject2 = (JSONObject) stationStatusInfo;
+ String stationID = jsonObject2.getString("StationID");
+ if (stationID != null && stationID.equals(next.getStationID())) {
+ JSONArray connectorStatusInfos = jsonObject2.getJSONArray("ConnectorStatusInfos");
+ if (connectorStatusInfos != null) {
+ for (Object connectorStatusInfo : connectorStatusInfos) {
+ JSONObject jsonObject3 = (JSONObject) connectorStatusInfo;
+ Integer status1 = jsonObject3.getInteger("Status");
+ if (status1 != null && status1 == 1) {
+ break;
+ }else {
+ iterator1.remove();
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ result.sort(Comparator.comparing(StationInfos::getDistance));
+ pageInfo.setTotal(result.size());
+
+// List<StationInfos> testing = testing(result.size(), pageNo, pageSize, result);
+ Map<String, Region> regionMap = otherClient.listAllRegion().getData()
+ .stream().collect(Collectors.toMap(Region::getCode, e -> e));
+ Map<Integer, Region> regionIdMap = otherClient.listAllRegion().getData()
+ .stream().collect(Collectors.toMap(Region::getId, e -> e));
+ List<Site> sites = new ArrayList<>();
+ List<TChargingPile> piles = new ArrayList<>();
+ List<TChargingGun> guns = new ArrayList<>();
+ for (StationInfos stationInfos : result) {
+ if (StringUtils.hasLength(stationInfos.getAreaCode())){
+ if (stationInfos.getAreaCode().equals("0")){
+ continue;
+ }
+ }
+ Site site = new Site();
+ site.setStationID(stationInfos.getStationID());
+ site.setPartnerId(26);
+ Calendar calendar = Calendar.getInstance();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+ String dateTime = dateFormat.format(calendar.getTime());
+ dateTime = dateTime.substring(2);
+ String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
+ timestampPart = timestampPart.replace(".", "").replace("E", "");
+ timestampPart = timestampPart.substring(0, 4);
+ site.setCode(dateTime+timestampPart);
+ site.setName(stationInfos.getStationName());
+ site.setSiteType(stationInfos.getStationType());
+ site.setBusinessCategory(2);
+ site.setStatus(1);
+ site.setConstructionSite(1);
+ site.setImgUrl("");
+ Region region = regionMap.get(stationInfos.getAreaCode());
+ if (region!=null){
+ site.setDistricts(region.getName());
+ site.setDistrictsCode(region.getCode());
+ Integer parentId = region.getParentId();
+ Region parentRegion = regionIdMap.get(parentId);
+ if (parentRegion != null) {
+ site.setCity(parentRegion.getName());
+ site.setCityCode(parentRegion.getCode());
+ Region region1 = regionIdMap.get(parentRegion.getParentId());
+ if (region1!=null){
+ site.setProvince(region1.getName());
+ site.setProvinceCode(region1.getCode());
+ }
+ }
+ }
+ site.setLon(stationInfos.getStationLng()+"");
+ site.setLat(stationInfos.getStationLat()+"");
+ site.setAddress(stationInfos.getAddress());
+// site.setCountryCode();
+ site.setPhone(stationInfos.getServiceTel());
+ site.setServicePhone(stationInfos.getServiceTel());
+ site.setGuide(stationInfos.getSiteGuide());
+ site.setStartServiceTime("24小时");
+// site.setEndServiceTime();
+// site.setServiceDescription();
+// site.setVehicleDescription();
+ site.setParkingSpace(stationInfos.getParkNums());
+// site.setRateDescription();
+// site.setSpaceChargeExplain();
+ // todo 临时写死一个
+ site.setAccountingStrategyId(232);
+// site.setEstablishmentTime();
+ site.setSort(180);
+// site.setRemark();
+// site.setMark();
+// site.setAreaCodeCountryside();
+ site.setStationClassification(1);
+ site.setGeneralApplicationType(1);
+ site.setSwapMatchCars(stationInfos.getMatchCars());
+ site.setRoundTheClock(1);
+ site.setParkType(4);
+// site.setParkFee();
+// site.setParkFeeFree();
+ site.setBusinessExpandType(1);
+ site.setElectricityType(1);
+ site.setCapacity(new BigDecimal("1250"));
+ site.setRatedPower(new BigDecimal("1200"));
+ site.setPeriodFee(1);
+ site.setOfficialRunTime("2025-06-22");
+// site.setStationOrientation();
+// site.setStationArea();
+ site.setHavePerson(1);
+ site.setVideoMonitor(1);
+// site.setSupportingFacilities();
+ site.setPrinterFlag(1);
+ site.setBarrierFlag(1);
+ site.setParkingLockFlag(1);
+// site.setElectricityFee();
+ site.setEquipmentOwnerName("途来电");
+ site.setSupplyType(1);
+ site.setResidentNo("0110043462");
+ site.setWattHourMeterNo("MX01D05054000217");
+ site.setForwardPower(new BigDecimal("0"));
+ site.setServiceFee("0:00-23:59:\"0.20\"");
+ Calendar calendar1 = Calendar.getInstance();
+ SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd");
+ String dateTime1 = dateFormat1.format(calendar1.getTime());
+ dateTime1 = dateTime1.substring(2);
+ String timestampPart1 = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
+ timestampPart1 = timestampPart1.replace(".", "").replace("E", "");
+ timestampPart1 = timestampPart1.substring(0, 4);
+ site.setRecordUniqueNo(dateTime+timestampPart);
+ site.setPayment(1);
+ site.setSupportOrder(1);
+// site.setSerAreaCode();
+ site.setIsOpenSynchronization(0);
+ site.setIsEnergyStorage(0);
+ if (site.getProvince()==null){
+ continue;
+ }
+ Integer siteId = siteClient.addSiteTemp(site).getData();
+ sites.add(site);
+ int i = 1;
+
+ for (EquipmentInfos equipmentInfo : stationInfos.getEquipmentInfos()) {
+ TChargingPile chargingPile = new TChargingPile();
+ Calendar calendar2 = Calendar.getInstance();
+ SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyyMMddHHmmss");
+ String dateTime4 = dateFormat3.format(calendar2.getTime());
+ dateTime4 = dateTime4.substring(2);
+ String timestampPart5 = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
+ timestampPart5 = timestampPart5.replace(".", "").replace("E", "");
+ timestampPart5 = timestampPart5.substring(0, 4);
+ chargingPile.setCode(dateTime4+timestampPart5);
+ chargingPile.setName(equipmentInfo.getEquipmentName());
+ chargingPile.setNumber(i);
+ chargingPile.setType(equipmentInfo.getEquipmentType());
+ chargingPile.setSiteId(siteId);
+ chargingPile.setPartnerId(26);
+ chargingPile.setManufacturerCode(equipmentInfo.getManufacturerID());
+ chargingPile.setManufacturer(equipmentInfo.getManufacturerName());
+ chargingPile.setEquipmentType(equipmentInfo.getEquipmentModel());
+ String productionDate = equipmentInfo.getProductionDate();
+ if (StringUtils.hasLength(productionDate)){
+ // 转化为LocalDate
+ chargingPile.setProductionDate(LocalDate.parse(productionDate));
+ }
+ chargingPile.setRatedPower(new BigDecimal(120));
+// chargingPile.setChargingStationNumber();
+ chargingPile.setStatus(1);
+// chargingPile.setIotdDeviceId();
+ chargingPile.setEquipmentClassification(1);
+// chargingPile.setEquipmentUniqueNumber(equipmentInfo.getEquipmentID());
+ chargingPile.setEquipmentLng(equipmentInfo.getEquipmentLng()+"");
+ chargingPile.setEquipmentLat(equipmentInfo.getEquipmentLat()+"");
+// chargingPile.setEquipmentProductCode();
+ chargingPile.setEquipmentPurpose(1);
+ chargingPile.setNewNationalStandard(1);
+ chargingPile.setVinFlag(1);
+ chargingPile.setName(site.getName()+chargingPile.getNumber()+"号桩");
+ Integer pileId = chargingPileClient.addPileTemp(chargingPile).getData();
+ piles.add(chargingPile);
+ i++;
+ int j = 1;
+
+ for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) {
+ TChargingGun gun = new TChargingGun();
+ gun.setConnectorID(connectorInfo.getConnectorID());
+ gun.setCode(j+"");
+ gun.setSiteId(siteId);
+ gun.setPartnerId(26);
+ gun.setChargingPileId(pileId);
+ gun.setName(connectorInfo.getConnectorName());
+ gun.setType(connectorInfo.getConnectorType());
+ gun.setStatus(2);
+ gun.setChargeMode(connectorInfo.getGunType());
+ // todo 临时写死
+ gun.setAccountingStrategyId(232);
+ gun.setUpperRatedVoltage(new BigDecimal("240"));
+ gun.setLowerLimitOfRatedVoltage(new BigDecimal("200"));
+ gun.setRatedCurrent(new BigDecimal("32"));
+ gun.setRatedPower(new BigDecimal("7"));
+ gun.setChargingPower(new BigDecimal("200"));
+ gun.setParkingNumber("39");
+ gun.setParkingStatus(1);
+ gun.setParkingLockState(0);
+ gun.setNationalStandard("3");
+// gun.setRemark();
+// gun.setSoc();
+ gun.setFullNumber(chargingPile.getNumber()+j+"");
+ gun.setEquipmentClassification(1);
+ gun.setConstantVoltageUpperLimits(new BigDecimal("240"));
+ gun.setConstantVoltageLowerLimits(new BigDecimal("200"));
+ gun.setConstantCurrentUpperLimits(new BigDecimal("32"));
+ gun.setConstantCurrentLowerLimits(new BigDecimal("7"));
+ gun.setAuxPower(3);
+ gun.setOpreateStatus(50);
+ gun.setChargeMode(2);
+// gun.setOpreateHours();
+ guns.add(gun);
+ chargingGunClient.addGunTemp(gun);
+ j++;
+
+ }
+ }
+ }
+ log.info("新增的站点数据:{}", sites);
+ log.info("新增的桩数据:{}", piles);
+ log.info("新增的枪数据:{}", guns);
+
+ return R.ok();
+ }
+
+ private List<StationInfos> getStationInfos(){
+ String s = chargePileHttpUtil.queryStationsInfo(1, 199);
+ // 将s字符串转化为json 然后转化为实体类PageInfo
+ JSONObject jsonObject = JSONObject.parseObject(s);
+ com.ruoyi.jianguan.domain.PageInfo pageInfo = JSON.parseObject(jsonObject.toJSONString(), com.ruoyi.jianguan.domain.PageInfo.class);
+ List<StationInfos> result = new ArrayList<>();
+ int itemSize = pageInfo.getItemSize();
+ if(itemSize>199){
+ result.addAll(pageInfo.getStationInfos());
+ int i = itemSize / 199;
+// int k =1;
+ for (int j = 2; j < i + 2; j++) {
+ s = chargePileHttpUtil.queryStationsInfo(j, 199);
+ // 将s字符串转化为json 然后转化为实体类PageInfo
+ jsonObject = JSONObject.parseObject(s);
+ pageInfo = JSON.parseObject(jsonObject.toJSONString(), com.ruoyi.jianguan.domain.PageInfo.class);
+ result.addAll(pageInfo.getStationInfos());
+// if (k==10){
+// break;
+// }
+// k++;
+ }
+ }else {
+ result.addAll(pageInfo.getStationInfos());
+ }
+ return result;
+ }
+ private List<ChargeOrder> getOrderList(){
+ String s = chargePileHttpUtil.getOrderList(1, 199);
+ // 将s字符串转化为json 然后转化为实体类PageInfo
+ JSONObject jsonObject = JSONObject.parseObject(s);
+ com.ruoyi.jianguan.domain.PageInfo pageInfo = JSON.parseObject(jsonObject.toJSONString(), com.ruoyi.jianguan.domain.PageInfo.class);
+ List<ChargeOrder> result = new ArrayList<>();
+ int itemSize = pageInfo.getItemSize();
+ int temp = 0;
+ if(itemSize>199){
+ result.addAll(pageInfo.getChargeOrders());
+ int i = itemSize / 199;
+ for (int j = 2; j < i + 2; j++) {
+ s = chargePileHttpUtil.getOrderList(j, 199);
+ // 将s字符串转化为json 然后转化为实体类PageInfo
+ jsonObject = JSONObject.parseObject(s);
+ pageInfo = JSON.parseObject(jsonObject.toJSONString(), com.ruoyi.jianguan.domain.PageInfo.class);
+ result.addAll(pageInfo.getChargeOrders());
+ if (temp==5){
+ break;
+ }
+ temp++;
+ }
+ }else {
+ result.addAll(pageInfo.getChargeOrders());
+ }
+ return result;
+ }
+
+}
+
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/PageInfo.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/PageInfo.java
new file mode 100644
index 0000000..c1c83bc
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/domain/PageInfo.java
@@ -0,0 +1,26 @@
+package com.ruoyi.jianguan.domain;
+
+import com.ruoyi.jianguan.dto.ChargeOrder;
+import com.ruoyi.jianguan.dto.StationInfos;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "分页对象")
+public class PageInfo {
+ private int pageNo;
+ private int pageCount;
+ private int itemSize;
+ private int total;
+ private List<StationInfos> stationInfos;
+ private List<ChargeOrder> chargeOrders;
+
+ public PageInfo(int pageNo, int pageCount) {
+ this.pageNo = pageNo;
+ this.pageCount = pageCount;
+ }
+ public PageInfo() {
+ }
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeDetail.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeDetail.java
new file mode 100644
index 0000000..7647085
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeDetail.java
@@ -0,0 +1,26 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(description = "充电详情实体类")
+public class ChargeDetail {
+ @ApiModelProperty(value = "开始时间", example = "2017-08-08 11:29:29")
+ private String DetailStartTime;
+ @ApiModelProperty(value = "结束时间")
+ private String DetailEndTime;
+ @ApiModelProperty(value = "时段电价")
+ private BigDecimal ElecPrice;
+ @ApiModelProperty(value = "时段服务费价格")
+ private BigDecimal SevicePrice;
+ @ApiModelProperty(value = "时段充电量")
+ private BigDecimal DetailPower;
+ @ApiModelProperty(value = "时段电费")
+ private BigDecimal DetailElecMoney;
+ @ApiModelProperty(value = "时段服务费")
+ private BigDecimal DetailSeviceMoney;
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeOrder.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeOrder.java
new file mode 100644
index 0000000..dae19d2
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeOrder.java
@@ -0,0 +1,59 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@ApiModel(description = "充电订单实体")
+@Data
+public class ChargeOrder {
+
+ @ApiModelProperty(value = "启动充电序列号", example = "1726204696124142")
+ private String startChargeSeq;
+
+ @ApiModelProperty(value = "启动充电序列状态", example = "4")
+ private Integer startChargeSeqStat;
+
+ @ApiModelProperty(value = "连接器状态", example = "1")
+ private Integer connectorStatus;
+
+ @ApiModelProperty(value = "连接器ID", example = "9227171651855801")
+ private String connectorID;
+
+ @ApiModelProperty(value = "当前电流A", example = "0.0")
+ private String currentA;
+
+ @ApiModelProperty(value = "电压A", example = "0.0")
+ private String voltageA;
+
+ @ApiModelProperty(value = "电池电量百分比", example = "0.00")
+ private String soc;
+
+ @ApiModelProperty(value = "开始时间", example = "2024-09-13 13:18:16")
+ private String startTime;
+
+ @ApiModelProperty(value = "结束时间", example = "2026-01-27 10:42:05")
+ private String endTime;
+
+ @ApiModelProperty(value = "总功率", example = "0.0000")
+ private String totalPower;
+
+ @ApiModelProperty(value = "电费", example = "0.00")
+ private String elecMoney;
+
+ @ApiModelProperty(value = "服务费", example = "0.00")
+ private String seviceMoney;
+
+ @ApiModelProperty(value = "总费用", example = "0.00")
+ private String totalMoney;
+
+ @ApiModelProperty(value = "车辆识别码", example = "null")
+ private String vin;
+
+ @ApiModelProperty(value = "充电详情列表")
+ private List<ChargeDetail> chargeDetails;
+
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeRecord.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeRecord.java
new file mode 100644
index 0000000..0d7d75f
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeRecord.java
@@ -0,0 +1,48 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@ApiModel(description = "充电记录实体类")
+@Data
+public class ChargeRecord {
+
+ @ApiModelProperty(value = "充电订单号\n" +
+ "\n", example = "395815801201708081212000874")
+ private String startChargeSeq;
+
+ @ApiModelProperty(value = "连接器ID", example = "3702120244206")
+ private String connectorID;
+
+ @ApiModelProperty(value = "开始时间", example = "2017-08-08 11:29:29")
+ private String startTime;
+
+ @ApiModelProperty(value = "结束时间", example = "2017-08-08 11:30:30")
+ private String endTime;
+
+ @ApiModelProperty(value = "总电量", example = "0.00")
+ private BigDecimal totalPower;
+
+ @ApiModelProperty(value = "电费总额", example = "0.00")
+ private BigDecimal totalElecMoney;
+
+ @ApiModelProperty(value = "服务费总额", example = "0.00")
+ private BigDecimal totalSeviceMoney;
+
+ @ApiModelProperty(value = "总金额", example = "0.00")
+ private BigDecimal totalMoney;
+
+ @ApiModelProperty(value = "停止原因", example = "2")
+ private Integer stopReason;
+
+ @ApiModelProperty(value = "总时长", example = "0")
+ private Integer sumPeriod;
+
+ @ApiModelProperty(value = "充电详情列表")
+ private List<ChargeDetail> chargeDetails;
+}
+
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStartResponse.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStartResponse.java
new file mode 100644
index 0000000..a4631bd
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStartResponse.java
@@ -0,0 +1,43 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(description = "请求停止充电返回对象")
+public class ChargeStartResponse {
+
+ @ApiModelProperty(value = "充电订单状态 1:启动中\n" +
+ "\n" +
+ "2:充电中\n" +
+ "\n" +
+ "3:停止中\n" +
+ "\n" +
+ "4:已结束\n" +
+ "\n" +
+ "5:未知")
+ private int startChargeSeqStat;
+
+ @ApiModelProperty(value = "充电订单号")
+ private String startChargeSeq;
+
+ @ApiModelProperty(value = "连接器ID", example = "3702120244401")
+ private String connectorID;
+
+ @ApiModelProperty(value = "操作结果0:成功 1:失败")
+ private int succStat;
+
+ @ApiModelProperty(value = "失败原因 0:无;\n" +
+ "\n" +
+ "1:此设备不存在;\n" +
+ "\n" +
+ "2:此设备离线:\n" +
+ "\n" +
+ "3:设备已停止充电;\n" +
+ "\n" +
+ "4~99:自定义")
+ private int failReason;
+
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStatus.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStatus.java
new file mode 100644
index 0000000..07d5118
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ChargeStatus.java
@@ -0,0 +1,61 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "充电订单对象")
+@Data
+public class ChargeStatus {
+ @ApiModelProperty(value = "累计充电时间")
+ private Long chargingTime;
+ @ApiModelProperty(value = "充电站名称")
+ private String stationName;
+ @ApiModelProperty(value = "桩名称")
+ private String pileName;
+ @ApiModelProperty(value = "桩编号")
+ private String equipmentID;
+ @ApiModelProperty(value = "枪名称")
+ private String gunName;
+ @ApiModelProperty(value = "枪编号")
+ private String connectorID;
+ @ApiModelProperty(value = "电费总额")
+ private Double elecMoney;
+ @ApiModelProperty(value = "充电总度数")
+ private Double totalPower;
+ @ApiModelProperty(value = "充电订单状态 1:启动中; 2:充电中; 3:停止中;4:已结束 5:未知 6:启动失败")
+ private Integer startChargeSeqStat;
+ @ApiModelProperty(value = "电池剩余电量")
+ private Integer soc;
+ @ApiModelProperty(value = "启动充电失败原因")
+ private String identCode;
+ @ApiModelProperty(value = "订单id")
+ private Long id;
+ @ApiModelProperty(value = "充电订单号")
+ private String startChargeSeq;
+ @ApiModelProperty(value = "充电设备接口 状态 1:空闲; 2:占用(未充电) 3:占用(充电中) 4:占用(预约锁定); 255:故障")
+ private Integer connectorStatus;
+ @ApiModelProperty(value = "电流A相")
+ private Double currentA;
+ @ApiModelProperty(value = "电流B相")
+ private Double currentB;
+ @ApiModelProperty(value = "电流C相")
+ private Double currentC;
+ @ApiModelProperty(value = "电压A相")
+ private Double voltageA;
+ @ApiModelProperty(value = "电压B相")
+ private Double voltageB;
+ @ApiModelProperty(value = "电压C相")
+ private Double voltageC;
+ @ApiModelProperty(value = "充电开始时间")
+ private String startTime;
+ @ApiModelProperty(value = "充电采样时间")
+ private String endTime;
+ @ApiModelProperty(value = "服务费总额")
+ private Double seviceMoney;
+ @ApiModelProperty(value = "总金额")
+ private Double totalMoney;
+ @ApiModelProperty(value = "时段数N")
+ private Integer sumPeriod;
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorInfo.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorInfo.java
new file mode 100644
index 0000000..bc5fed7
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorInfo.java
@@ -0,0 +1,42 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ConnectorInfo {
+ @ApiModelProperty(value = "连接器ID")
+ private String connectorID;
+
+ @ApiModelProperty(value = "连接器名称")
+ private String connectorName;
+
+ @ApiModelProperty(value = "连接器类型 1:家用插座(模式2);\n" +
+ "2:交流接口插座(模式3,连 接方式B);\n" +
+ "3:交流接口插头(带枪线, 模式3,连接方式C);\n" +
+ "4:直流接口枪头(带枪线, 模式4);\n" +
+ "5:无线充电座; 6:其他")
+ private int connectorType;
+
+ @ApiModelProperty(value = "电压上限")
+ private int voltageUpperLimits;
+
+ @ApiModelProperty(value = "电压下限")
+ private int voltageLowerLimits;
+
+ @ApiModelProperty(value = "电流")
+ private int current;
+
+ @ApiModelProperty(value = "功率")
+ private double power;
+
+ @ApiModelProperty(value = "停车位编号")
+ private String parkNo;
+ @ApiModelProperty(value = "状态 1空闲 2占用")
+ private Integer status;
+
+ @ApiModelProperty(value = "国家标准")
+ private int nationalStandard;
+ @ApiModelProperty(value = "枪类型 1=快充 2=慢充")
+ private Integer gunType;
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorStatusInfos.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorStatusInfos.java
new file mode 100644
index 0000000..22347cb
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/ConnectorStatusInfos.java
@@ -0,0 +1,24 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ConnectorStatusInfos implements Serializable {
+
+
+ @ApiModelProperty(value = "充电设备接口编码")
+ private String ConnectorID;
+
+ @ApiModelProperty(value = "接口状态 0:离网; 1:空闲; 2:占用(未充电); 3:占用(充电中); 4:占用(预约锁定); 255:故障")
+ private Integer Status;
+
+ @ApiModelProperty(value = "车位状态 0:未知 10:空闲 50:占用")
+ private Integer ParkStatus;
+
+ @ApiModelProperty(value = "地锁状态 0:未知 10:已解锁 50:已上锁")
+ private Integer LockStatus;
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/EquipmentInfos.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/EquipmentInfos.java
new file mode 100644
index 0000000..dd5a939
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/EquipmentInfos.java
@@ -0,0 +1,49 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "充电站对象")
+
+public class EquipmentInfos {
+ @ApiModelProperty(value = "设备ID")
+ private String equipmentID;
+
+ @ApiModelProperty(value = "设备名称")
+ private String equipmentName;
+
+ @ApiModelProperty(value = "制造商ID")
+ private String manufacturerID;
+
+ @ApiModelProperty(value = "制造商名称")
+ private String manufacturerName;
+
+ @ApiModelProperty(value = "设备型号")
+ private String equipmentModel;
+
+ @ApiModelProperty(value = "生产日期")
+ private String productionDate;
+
+ @ApiModelProperty(value = "设备类型 1:直流设备; 2:交流设备;\n" +
+ "3:交直流一体设备; 4:无线设备;\n" +
+ "5:其他")
+ private int equipmentType;
+
+ @ApiModelProperty(value = "设备经度")
+ private double equipmentLng;
+
+ @ApiModelProperty(value = "设备纬度")
+ private double equipmentLat;
+
+ @ApiModelProperty(value = "功率")
+ private double power;
+ @ApiModelProperty(value = "枪类型 1=快充 2=慢充")
+ private Integer gunType;
+ @ApiModelProperty(value = "连接器信息列表")
+ private List<ConnectorInfo> connectorInfos;
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/OperatorData.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/OperatorData.java
new file mode 100644
index 0000000..09fcf9d
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/OperatorData.java
@@ -0,0 +1,64 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel(description = "推送统一接收实体类")
+public class OperatorData {
+
+ @ApiModelProperty(value = "运营商ID", example = "395815801")
+ private String OperatorID;
+
+ @ApiModelProperty(value = "数据内容", example = "MdtylP2lneRGc9XzcskU+I+sLFM0lW0OmxV4yRCW7Yoqy7XWGbN4g0sNMxyALuT59PsBJ1Oy4uNbCcvjTD2eJFnSSx0UDBOMu4KFkIjYrJp2IWroDD/960epFXvTEldX+c92DmO2HI9yUiVDYMHdt3P4in69l4RVRUy9Czos7H4T5GApCizy42jXEGv1UgON")
+ private String Data;
+
+ @ApiModelProperty(value = "时间戳", example = "20180517090848")
+ private String TimeStamp;
+
+ @ApiModelProperty(value = "序列号", example = "0001")
+ private String Seq;
+
+ @ApiModelProperty(value = "签名", example = "AD80102D05D1C31C2056DE130333A8CE")
+ private String Sig;
+
+ // Getters and Setters
+ public String getOperatorID() {
+ return OperatorID;
+ }
+
+ public void setOperatorID(String operatorID) {
+ OperatorID = operatorID;
+ }
+
+ public String getData() {
+ return Data;
+ }
+
+ public void setData(String data) {
+ Data = data;
+ }
+
+ public String getTimeStamp() {
+ return TimeStamp;
+ }
+
+ public void setTimeStamp(String timeStamp) {
+ TimeStamp = timeStamp;
+ }
+
+ public String getSeq() {
+ return Seq;
+ }
+
+ public void setSeq(String seq) {
+ Seq = seq;
+ }
+
+ public String getSig() {
+ return Sig;
+ }
+
+ public void setSig(String sig) {
+ Sig = sig;
+ }
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/PageInfo.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/PageInfo.java
new file mode 100644
index 0000000..507b842
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/PageInfo.java
@@ -0,0 +1,24 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "分页对象")
+public class PageInfo {
+ private int pageNo;
+ private int pageCount;
+ private int itemSize;
+ private int total;
+ private List<StationInfos> stationInfos;
+ private List<ChargeOrder> chargeOrders;
+
+ public PageInfo(int pageNo, int pageCount) {
+ this.pageNo = pageNo;
+ this.pageCount = pageCount;
+ }
+ public PageInfo() {
+ }
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/StationInfos.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/StationInfos.java
new file mode 100644
index 0000000..265544a
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/StationInfos.java
@@ -0,0 +1,116 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@ApiModel(value = "充电站对象")
+@Data
+public class StationInfos {
+ @ApiModelProperty(value = "距离我xxKM")
+ private String distance;
+ @ApiModelProperty(value = "站点ID")
+ private String stationID;
+
+ @ApiModelProperty(value = "运营商ID")
+ private String operatorID;
+
+ @ApiModelProperty(value = "设备所有者ID")
+ private String equipmentOwnerID;
+
+ @ApiModelProperty(value = "站点名称")
+ private String stationName;
+
+ @ApiModelProperty(value = "国家代码")
+ private String countryCode;
+
+ @ApiModelProperty(value = "区域代码")
+ private String areaCode;
+
+ @ApiModelProperty(value = "地址")
+ private String address;
+
+ @ApiModelProperty(value = "站点电话")
+ private String stationTel;
+
+ @ApiModelProperty(value = "服务电话")
+ private String serviceTel;
+
+ @ApiModelProperty(value = "站点类型 1:公共; 50:个人;\n" +
+ "100:公交(专用);\n" +
+ "101:环卫(专用);\n" +
+ "102:物流(专用);\n" +
+ "103:出租车(专用); 255:其他")
+ private int stationType;
+
+ @ApiModelProperty(value = "站点状态 0:未知;\n" +
+ "1:建设中;\n" +
+ "5:关闭下线; 6:维护中;\n" +
+ "50:正常使用")
+ private int stationStatus;
+
+ @ApiModelProperty(value = "停车位数量")
+ private int parkNums;
+
+ @ApiModelProperty(value = "站点经度")
+ private double stationLng;
+
+ @ApiModelProperty(value = "站点纬度")
+ private double stationLat;
+
+ @ApiModelProperty(value = "站点引导")
+ private String siteGuide;
+
+ @ApiModelProperty(value = "建设情况 1:居民区;\n" +
+ "2:公共机构;\n" +
+ "3:企事业单位;\n" +
+ "4:写字楼;\n" +
+ "5:工业园区; 6:交通枢纽;\n" +
+ "7:大型文体设施; 8:城市绿地;\n" +
+ "9:大型建筑配建停车场; 10:路边停车位;\n" +
+ "11:城际高速服务区; 255:其他")
+ private int construction;
+
+ @ApiModelProperty(value = "匹配车型")
+ private String matchCars;
+
+ @ApiModelProperty(value = "停车场信息")
+ private String parkInfo;
+
+ @ApiModelProperty(value = "营业时间")
+ private String busineHours;
+
+ @ApiModelProperty(value = "电费价格说明")
+ private String electricityFee;
+
+ @ApiModelProperty(value = "服务费价格说明")
+ private String serviceFee;
+
+ @ApiModelProperty(value = "停车费价格说明")
+ private String parkFee;
+
+ @ApiModelProperty(value = "支付方式")
+ private String payment;
+
+ @ApiModelProperty(value = "是否支持预约")
+ private int supportOrder;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+ @ApiModelProperty(value = "图片")
+ private List<String> pictures;
+ @ApiModelProperty(value = "快充总数")
+ private Integer fastTotal;
+ @ApiModelProperty(value = "快充数量")
+ private Integer fast;
+ @ApiModelProperty(value = "慢充数量")
+ private Integer snow;
+ @ApiModelProperty(value = "慢充总数")
+ private Integer snowTotal;
+
+ @ApiModelProperty(value = "设备信息列表")
+ private List<EquipmentInfos> equipmentInfos;
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/SupportOrder.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/SupportOrder.java
new file mode 100644
index 0000000..013ab57
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/SupportOrder.java
@@ -0,0 +1,119 @@
+package com.ruoyi.jianguan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@ApiModel(description = "查询业务策略信息")
+@Data
+public class SupportOrder {
+
+ @ApiModelProperty(value = "设备业务序列号", example = "123456789201805081628123456")
+ private String EquipBizSeq;
+
+ @ApiModelProperty(value = "连接器ID", example = "3702120244401")
+ private String ConnectorID;
+
+ @ApiModelProperty(value = "成功状态", example = "0")
+ private int SuccStat;
+
+ @ApiModelProperty(value = "失败原因", example = "0")
+ private int FailReason;
+
+ @ApiModelProperty(value = "总周期", example = "15")
+ private int SumPeriod;
+
+ @ApiModelProperty(value = "策略信息列表")
+ private List<PolicyInfo> PolicyInfos;
+
+ // Getters and Setters
+
+ public String getEquipBizSeq() {
+ return EquipBizSeq;
+ }
+
+ public void setEquipBizSeq(String equipBizSeq) {
+ EquipBizSeq = equipBizSeq;
+ }
+
+ public String getConnectorID() {
+ return ConnectorID;
+ }
+
+ public void setConnectorID(String connectorID) {
+ ConnectorID = connectorID;
+ }
+
+ public int getSuccStat() {
+ return SuccStat;
+ }
+
+ public void setSuccStat(int succStat) {
+ SuccStat = succStat;
+ }
+
+ public int getFailReason() {
+ return FailReason;
+ }
+
+ public void setFailReason(int failReason) {
+ FailReason = failReason;
+ }
+
+ public int getSumPeriod() {
+ return SumPeriod;
+ }
+
+ public void setSumPeriod(int sumPeriod) {
+ SumPeriod = sumPeriod;
+ }
+
+ public List<PolicyInfo> getPolicyInfos() {
+ return PolicyInfos;
+ }
+
+ public void setPolicyInfos(List<PolicyInfo> policyInfos) {
+ PolicyInfos = policyInfos;
+ }
+
+ // Inner class for PolicyInfo
+ @ApiModel(description = "策略信息")
+ public static class PolicyInfo {
+ @ApiModelProperty(value = "开始时间", example = "090000")
+ private String StartTime;
+
+ @ApiModelProperty(value = "电价", example = "0.5000")
+ private String ElecPrice;
+
+ @ApiModelProperty(value = "服务费", example = "0.4000")
+ private String SevicePrice;
+
+ // Getters and Setters
+
+ public String getStartTime() {
+ return StartTime;
+ }
+
+ public void setStartTime(String startTime) {
+ StartTime = startTime;
+ }
+
+ public String getElecPrice() {
+ return ElecPrice;
+ }
+
+ public void setElecPrice(String elecPrice) {
+ ElecPrice = elecPrice;
+ }
+
+ public String getSevicePrice() {
+ return SevicePrice;
+ }
+
+ public void setSevicePrice(String sevicePrice) {
+ SevicePrice = sevicePrice;
+ }
+ }
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/TContent.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/TContent.java
new file mode 100644
index 0000000..db42551
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/dto/TContent.java
@@ -0,0 +1,47 @@
+package com.ruoyi.jianguan.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 部门表
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2017-07-11
+ */
+@TableName("t_content")
+@Data
+public class TContent extends Model<TContent> {
+ private static final long serialVersionUID = 1L;
+ /**
+ * 主键id
+ */
+ @TableId(value="id", type= IdType.AUTO)
+ private Integer id;
+ /**
+ * 类型1推送订单结束 2订单状态 3设备状态
+ */
+ private Integer type;
+ /**
+ * 内容
+ */
+ private String content;
+ /**
+ * 创建时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+ @TableField("createTime")
+ private Date createTime;
+
+
+
+}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/ChargePileHttpUtil.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/ChargePileHttpUtil.java
new file mode 100644
index 0000000..ebc8184
--- /dev/null
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/ChargePileHttpUtil.java
@@ -0,0 +1,296 @@
+package com.ruoyi.jianguan.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.utils.HttpUtils;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.jianguan.constant.ChargePileInterface;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 通用http发送方法
+ *
+ * @author ruoyi
+ */
+@Component
+@Slf4j
+public class ChargePileHttpUtil {
+
+ private static final String OperatorID = "MA01H3BQ3";
+ private static final String OperatorSecret = "f1331ef0b37c2d2";
+ private static final String SigSecret = "a6fedf0e1b27d6f8";
+ private static final String DataSecret = "50a61b93919c9606";
+ private static final String DataSecretIV = "7c8ac6861661d586";
+
+// @Autowired
+// private RedisService redisService;
+
+ /**
+ * 验签
+ * @return
+ */
+ public static boolean checkSig(){
+ return true;
+ }
+
+ /**
+ * 获取token
+ * @return
+ */
+ public String getToken(){
+ String token ="";
+// String token = redisService.getCacheObject(ChargePileInterface.TOKEN_KEY);
+// if(StringUtils.hasLength(token)){
+// return token;
+// }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("OperatorSecret", OperatorSecret);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_TOKEN, jsonObject.toJSONString());
+ log.info("获取token请求结果:{}",result);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ JSONObject tokenResult = JSONObject.parseObject(decrypt);
+ token = tokenResult.getString("AccessToken");
+// Integer TokenAvailableTime = tokenResult.getInteger("TokenAvailableTime");
+// redisService.setCacheObject(ChargePileInterface.TOKEN_KEY,token,Long.valueOf(TokenAvailableTime)-60L, TimeUnit.SECONDS);
+ return token;
+ }
+
+ /**
+ * 获取充电桩
+ * @return
+ */
+ public String queryStationsInfo(Integer PageNo, Integer PageSize){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("PageNo", PageNo);
+ jsonObject.put("PageSize", PageSize);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_STATIONS_INFO, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+ /**
+ * 获取充电桩
+ * @return
+ */
+ public String getOrderList(Integer PageNo, Integer PageSize){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("PageNo", PageNo);
+ jsonObject.put("PageSize", PageSize);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_ORDER_LIST, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+
+ /**
+ * 获取充电桩
+ * @return
+ */
+ public String queryStationStatus(List<String> StationIDs){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("StationIDs", StationIDs);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_STATION_STATUS, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+
+ /**
+ * 请求设备认证
+ * @param EquipAuthSeq 设备认证流水号 格式“运营商ID+唯一编号”,27字符
+ * @param ConnectorID 充电设备接口编码 格式“6位行政区编码,4位电站编码,3位终端编码”,13位字符
+ * @return
+ */
+ public String queryEquipAuth(String EquipAuthSeq,String ConnectorID){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("EquipAuthSeq", EquipAuthSeq);
+ jsonObject.put("ConnectorID", ConnectorID);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_EQUIP_AUTH, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+
+ /**
+ * 请求充电
+ * @param StartChargeSeq 充电订单号 格式“运营商ID+唯一编号”,27字符
+ * @param ConnectorID 充电设备接口编码 格式“6位行政区编码,4位电站编码,3位终端编码”,13位字符
+ * @param QRCode 二维码其他信息 二维码中含有自定义部分的,需要将二维码自定义部分的原文传输。
+ * @param PhoneNum 手机号 个人支付必传,格式确保正确
+ * @param PlateNum 车牌号 停车减免必传,格式确保正确
+ * @return
+ */
+ public String queryStartCharge(String StartChargeSeq,String ConnectorID,String QRCode,String PhoneNum,String PlateNum,BigDecimal money){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("StartChargeSeq", StartChargeSeq);
+ jsonObject.put("ConnectorID", ConnectorID);
+ jsonObject.put("QRCode", QRCode);
+ jsonObject.put("PhoneNum", PhoneNum);
+ jsonObject.put("PlateNum", PlateNum);
+ jsonObject.put("chargingAmt", money);
+ String params = jsonObject.toJSONString();
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_START_CHARGE, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+
+ /**
+ * 请求停止充电
+ * @param StartChargeSeq 充电订单号 格式“运营商ID+唯一编号”,27字符
+ * @param ConnectorID 充电设备接口编码 格式“6位行政区编码,4位电站编码,3位终端编码”,13位字符
+ * @return
+ */
+ public String queryStopCharge(String StartChargeSeq,String ConnectorID){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("StartChargeSeq", StartChargeSeq);
+ jsonObject.put("ConnectorID", ConnectorID);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_STOP_CHARGE, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+ /**
+ * 查询订单状态
+ */
+ public String queryEquipChargeStatus(String StartChargeSeq){
+ String token = getToken();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("StartChargeSeq", StartChargeSeq);
+ String params = jsonObject.toJSONString();
+ // 参数加密
+ String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params);
+ // 获取签名
+ String timeStamp = System.currentTimeMillis() + "";
+ SequenceGenerator generator = new SequenceGenerator();
+ String nextSequence = generator.getNextSequence();
+ String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret);
+ jsonObject = new JSONObject();
+ jsonObject.put("OperatorID", OperatorID);
+ jsonObject.put("Data", data);
+ jsonObject.put("TimeStamp", timeStamp);
+ jsonObject.put("Seq", nextSequence);
+ jsonObject.put("Sig", hmacMD5);
+ String result = HttpUtils.sendPost(ChargePileInterface.QUERY_EQUIP_CHARGE_STATUS, jsonObject.toJSONString(),token);
+ String string = JSONObject.parseObject(result).getString("Data");
+ String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string);
+ System.err.println(decrypt);
+ return decrypt;
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.7.1