mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-10 10:19:54 +08:00
Merge branch 'dev' into HuiFu
This commit is contained in:
@@ -5,6 +5,7 @@ import com.jsowell.common.annotation.Anonymous;
|
|||||||
import com.jsowell.common.core.controller.BaseController;
|
import com.jsowell.common.core.controller.BaseController;
|
||||||
import com.jsowell.common.exception.BusinessException;
|
import com.jsowell.common.exception.BusinessException;
|
||||||
import com.jsowell.common.response.RestApiResponse;
|
import com.jsowell.common.response.RestApiResponse;
|
||||||
|
import com.jsowell.pile.dto.LianLianPushStationInfoDTO;
|
||||||
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
||||||
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
||||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||||
@@ -33,11 +34,11 @@ public class LianLianController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
@PostMapping("/pushStationInfo")
|
@PostMapping("/pushStationInfo")
|
||||||
public RestApiResponse<?> pushStationInfo(@RequestBody QueryStationInfoDTO dto) {
|
public RestApiResponse<?> pushStationInfo(@RequestBody LianLianPushStationInfoDTO dto) {
|
||||||
logger.info("推送联联平台充电站信息 params:{}", JSONObject.toJSONString(dto));
|
logger.info("推送联联平台充电站信息 params:{}", JSONObject.toJSONString(dto));
|
||||||
RestApiResponse<?> response = null;
|
RestApiResponse<?> response = null;
|
||||||
try {
|
try {
|
||||||
lianLianService.pushStationInfo(Long.parseLong(dto.getStationID()));
|
lianLianService.pushStationInfo(dto);
|
||||||
response = new RestApiResponse<>();
|
response = new RestApiResponse<>();
|
||||||
}catch (BusinessException e) {
|
}catch (BusinessException e) {
|
||||||
logger.error("推送联联平台充电站信息 error",e);
|
logger.error("推送联联平台充电站信息 error",e);
|
||||||
|
|||||||
@@ -229,66 +229,27 @@ public class SpringBootTestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLianLian() throws Exception {
|
public void testLianLian(){
|
||||||
// Long stationId = 2L;
|
// 获取令牌
|
||||||
// // 通过id查询站点相关信息
|
|
||||||
// PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
|
|
||||||
// // 组装联联平台所需要的数据格式
|
|
||||||
// StationInfo info = StationInfo.builder()
|
|
||||||
// .StationID(String.valueOf(stationId))
|
|
||||||
// .OperatorID(Constants.OPERATORID_LIANLIAN)
|
|
||||||
// .EquipmentOwnerID(Constants.OPERATORID_LIANLIAN)
|
|
||||||
// .StationName(pileStationInfo.getStationName())
|
|
||||||
// .IsAloneApply(Integer.valueOf(pileStationInfo.getAloneApply()))
|
|
||||||
// .IsPublicParkingLot(Integer.valueOf(pileStationInfo.getPublicParking()))
|
|
||||||
// .CountryCode(pileStationInfo.getCountryCode())
|
|
||||||
// .AreaCode(pileStationInfo.getAreaCode())
|
|
||||||
// .Address(pileStationInfo.getAddress())
|
|
||||||
// .ServiceTel(pileStationInfo.getServiceTel())
|
|
||||||
// .StationType(Integer.valueOf(pileStationInfo.getStationType()))
|
|
||||||
// .StationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
|
|
||||||
// .ParkNums(Integer.valueOf(pileStationInfo.getParkNums()))
|
|
||||||
// .StationLng(new BigDecimal(pileStationInfo.getStationLng()))
|
|
||||||
// .StationLat(new BigDecimal(pileStationInfo.getStationLat()))
|
|
||||||
// .Construction(Integer.valueOf(pileStationInfo.getConstruction()))
|
|
||||||
// .OpenAllDay(Integer.valueOf(pileStationInfo.getOpenAllDay()))
|
|
||||||
// // .MinElectricityPrice()
|
|
||||||
// // .ElectricityFee()
|
|
||||||
// // .ServiceFee()
|
|
||||||
// .ParkFree(Integer.valueOf(pileStationInfo.getParkFree()))
|
|
||||||
// // .ParkFee()
|
|
||||||
// .Payment(pileStationInfo.getPayment())
|
|
||||||
// .SupportOrder(Integer.valueOf(pileStationInfo.getSupportOrder()))
|
|
||||||
// // .equipmentInfos()
|
|
||||||
// // .ParkFeeType()
|
|
||||||
// .ToiletFlag(Integer.valueOf(pileStationInfo.getToiletFlag()))
|
|
||||||
// .StoreFlag(Integer.valueOf(pileStationInfo.getStoreFlag()))
|
|
||||||
// .RestaurantFlag(Integer.valueOf(pileStationInfo.getRestaurantFlag()))
|
|
||||||
// .LoungeFlag(Integer.valueOf(pileStationInfo.getLoungeFlag()))
|
|
||||||
// .CanopyFlag(Integer.valueOf(pileStationInfo.getCanopyFlag()))
|
|
||||||
// .PrinterFlag(Integer.valueOf(pileStationInfo.getPrinterFlag()))
|
|
||||||
// .BarrierFlag(Integer.valueOf(pileStationInfo.getBarrierFlag()))
|
|
||||||
// .ParkingLockFlag(Integer.valueOf(pileStationInfo.getParkingLockFlag()))
|
|
||||||
//
|
|
||||||
// .build();
|
|
||||||
|
|
||||||
// List<EquipmentInfo> pileList = lianLianService.getPileList(pileStationInfo);
|
|
||||||
// if (CollectionUtils.isNotEmpty(pileList)) {
|
|
||||||
// info.setEquipmentInfos(pileList); // 充电设备信息列表
|
|
||||||
// }
|
|
||||||
|
|
||||||
String url = "http://testdataexchange.evchargeonline.com:82/shevcs/v1/" + "notification_stationInfo";
|
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
json.put("OperatorID", "MA1JLFUU8");
|
|
||||||
json.put("OperatorSecret", "Nh62XxllR5OjAzFj");
|
|
||||||
// json.put("StationInfo", info);
|
|
||||||
|
|
||||||
LianLianGetTokenDTO dto = new LianLianGetTokenDTO();
|
LianLianGetTokenDTO dto = new LianLianGetTokenDTO();
|
||||||
dto.setOperatorId("987654321");
|
dto.setOperatorId("987654321");
|
||||||
dto.setOperatorSecret("1234567890abcdef");
|
dto.setOperatorSecret("1234567890abcdef");
|
||||||
String token = lianLianService.getToken(dto);
|
String token = lianLianService.getToken(dto);
|
||||||
System.out.println("token:" + token);
|
System.out.println("token:" + token);
|
||||||
|
|
||||||
|
|
||||||
|
LianLianPushStationInfoDTO dto1 = LianLianPushStationInfoDTO.builder()
|
||||||
|
.OperatorID("987654321")
|
||||||
|
.DataSecret("1234567890abcdef")
|
||||||
|
.DataSecretIV("1234567890abcdef")
|
||||||
|
.SigSecret("1234567890abcdef")
|
||||||
|
.token(token)
|
||||||
|
.stationId(2L)
|
||||||
|
|
||||||
|
.build();
|
||||||
|
lianLianService.pushStationInfo(dto1);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.jsowell.common.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联联平台桩状态
|
||||||
|
*
|
||||||
|
* @author JS-ZZA
|
||||||
|
* @date 2023/5/16 9:39
|
||||||
|
*/
|
||||||
|
public enum LianLianPileStatusEnum {
|
||||||
|
UNKNOWN("0", "未知"),
|
||||||
|
CONSTRUCTION("1", "建设中"),
|
||||||
|
CLOSE_OFFLINE("5", "关闭下线"),
|
||||||
|
UNDER_MAINTENANCE("6", "维护中"),
|
||||||
|
NORMAL("50", "正常"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
LianLianPileStatusEnum(String code, String value) {
|
||||||
|
this.code = code;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package com.jsowell.common.enums;
|
||||||
|
|
||||||
|
import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点 支付方式
|
||||||
|
*
|
||||||
|
* @author JS-ZZA
|
||||||
|
* @date 2023/5/16 9:17
|
||||||
|
*/
|
||||||
|
public enum StationPaymentEnum {
|
||||||
|
CARD_PAYMENT("0", "刷卡"),
|
||||||
|
ONLINE_PAYMENT("1", "线上"),
|
||||||
|
CASH_PAYMENT("2", "现金"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
StationPaymentEnum(String code, String value) {
|
||||||
|
this.code = code;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
StationPaymentEnum() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getPaymentByCode(String code) {
|
||||||
|
for (StationPaymentEnum paymentEnum : StationPaymentEnum.values()) {
|
||||||
|
if (paymentEnum.getValue().equals(code)) {
|
||||||
|
return paymentEnum.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -193,6 +193,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||||||
long chargingTime = DateUtils.intervalTime("2023-02-24 16:00:00", "2023-02-24 17:03:06");
|
long chargingTime = DateUtils.intervalTime("2023-02-24 16:00:00", "2023-02-24 17:03:06");
|
||||||
System.out.println(chargingTime);
|
System.out.println(chargingTime);
|
||||||
|
|
||||||
|
|
||||||
|
String dateToStr = DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date());
|
||||||
|
System.out.println(dateToStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
package com.jsowell.common.util.lianlian;
|
package com.jsowell.common.util.lianlian;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.jsowell.common.util.DateUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpEntity;
|
||||||
import org.apache.http.client.config.RequestConfig;
|
import org.apache.http.client.config.RequestConfig;
|
||||||
@@ -10,6 +14,9 @@ import org.apache.http.impl.client.CloseableHttpClient;
|
|||||||
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.impl.client.HttpClients;
|
||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 联联充电
|
* @author 联联充电
|
||||||
*/
|
*/
|
||||||
@@ -81,5 +88,55 @@ public class HttpRequestUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联联平台发送请求
|
||||||
|
*
|
||||||
|
* @param token 联联平台令牌
|
||||||
|
* @param data 要传输的JsonString格式数据
|
||||||
|
* @param url 请求地址
|
||||||
|
* @param dataSecret 消息密钥
|
||||||
|
* @param dataSecretIV 消息密钥初始化向量
|
||||||
|
* @param operatorId 运营商id
|
||||||
|
* @param sigSecret 签名密钥
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String sendPost(String token, String data, String url, String dataSecret,
|
||||||
|
String dataSecretIV, String operatorId, String sigSecret){
|
||||||
|
//加密
|
||||||
|
byte[] encryptText = Cryptos.aesEncrypt(data.getBytes(),
|
||||||
|
dataSecret.getBytes(), dataSecretIV.getBytes());
|
||||||
|
String encryptData = Encodes.encodeBase64(encryptText);
|
||||||
|
System.out.println("加密数据:" + encryptData);
|
||||||
|
|
||||||
|
Map<String, String> params = Maps.newLinkedHashMap();
|
||||||
|
params.put("OperatorID", operatorId);
|
||||||
|
params.put("Data", encryptData);
|
||||||
|
params.put("TimeStamp", DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date()));
|
||||||
|
params.put("Seq", "001");
|
||||||
|
String sign = GBSignUtils.sign(params, sigSecret);
|
||||||
|
params.put("Sig", sign);
|
||||||
|
|
||||||
|
String postData = JSON.toJSONString(params);
|
||||||
|
System.out.println("最终提交数据:" + postData);
|
||||||
|
|
||||||
|
String hutoolRequest = HttpRequest.post(url).header("Authorization", "Bearer " + token).body(postData).execute().body();
|
||||||
|
|
||||||
|
System.out.println("接收到返回数据:" + hutoolRequest);
|
||||||
|
|
||||||
|
Map<String, String> map = (Map<String, String>) JSON.parse(hutoolRequest);
|
||||||
|
|
||||||
|
String rData = map.get("Data");
|
||||||
|
|
||||||
|
byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(rData),
|
||||||
|
dataSecret.getBytes(), dataSecretIV.getBytes());
|
||||||
|
String plainData = "";
|
||||||
|
try {
|
||||||
|
plainData = new String(plainText, "UTF-8");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("解密数据:" + plainData);
|
||||||
|
return plainData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.jsowell.pile.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联联平台推送站点信息
|
||||||
|
*
|
||||||
|
* @author JS-ZZA
|
||||||
|
* @date 2023/5/10 14:56
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class LianLianPushStationInfoDTO {
|
||||||
|
/**
|
||||||
|
* 运营商id
|
||||||
|
*/
|
||||||
|
private String OperatorID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 签名秘钥
|
||||||
|
*/
|
||||||
|
private String SigSecret;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息密钥
|
||||||
|
*/
|
||||||
|
private String DataSecret;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息密钥初始化向量
|
||||||
|
*/
|
||||||
|
private String DataSecretIV;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 令牌
|
||||||
|
*/
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点id
|
||||||
|
*/
|
||||||
|
private Long stationId;
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jsowell.thirdparty.domain;
|
package com.jsowell.thirdparty.domain;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -19,12 +20,13 @@ public class ConnectorInfo {
|
|||||||
* 充电设备接口编码 Y
|
* 充电设备接口编码 Y
|
||||||
* 充电设备接口编码,同一对接平台内唯一
|
* 充电设备接口编码,同一对接平台内唯一
|
||||||
*/
|
*/
|
||||||
private String ConnectorID;
|
@JSONField(name = "ConnectorID")
|
||||||
|
private String connectorID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备接口名称 N
|
* 充电设备接口名称 N
|
||||||
*/
|
*/
|
||||||
private String ConnectorName;
|
// private String ConnectorName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备接口类型 Y
|
* 充电设备接口类型 Y
|
||||||
@@ -33,32 +35,37 @@ public class ConnectorInfo {
|
|||||||
* 3:交流接口插头(带枪线,模式3,连接方式C)
|
* 3:交流接口插头(带枪线,模式3,连接方式C)
|
||||||
* 4:直流接口枪头(带枪线,模式4)
|
* 4:直流接口枪头(带枪线,模式4)
|
||||||
*/
|
*/
|
||||||
private Integer ConnectorType;
|
@JSONField(name = "ConnectorType")
|
||||||
|
private Integer connectorType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 额定电压上限(单位:V) Y
|
* 额定电压上限(单位:V) Y
|
||||||
*/
|
*/
|
||||||
private Integer VoltageUpperLimits;
|
@JSONField(name = "VoltageUpperLimits")
|
||||||
|
private Integer voltageUpperLimits;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 额定电压下限(单位:V) Y
|
* 额定电压下限(单位:V) Y
|
||||||
*/
|
*/
|
||||||
private Integer VoltageLowerLimits;
|
@JSONField(name = "VoltageLowerLimits")
|
||||||
|
private Integer voltageLowerLimits;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 额定电流(单位:A) Y
|
* 额定电流(单位:A) Y
|
||||||
*/
|
*/
|
||||||
private Integer Current;
|
@JSONField(name = "Current")
|
||||||
|
private Integer current;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 额定功率(单位:kW) Y
|
* 额定功率(单位:kW) Y
|
||||||
*/
|
*/
|
||||||
private BigDecimal Power;
|
@JSONField(name = "Power")
|
||||||
|
private BigDecimal power;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车位号 N
|
* 车位号 N
|
||||||
* 停车场车位编号
|
* 停车场车位编号
|
||||||
*/
|
*/
|
||||||
private String ParkNo;
|
// private String ParkNo;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jsowell.thirdparty.domain;
|
package com.jsowell.thirdparty.domain;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -20,40 +21,44 @@ public class EquipmentInfo {
|
|||||||
* 设备编码 Y
|
* 设备编码 Y
|
||||||
* 设备唯一编码,对同一对接平台,保证唯一
|
* 设备唯一编码,对同一对接平台,保证唯一
|
||||||
*/
|
*/
|
||||||
private String EquipmentID;
|
@JSONField(name = "EquipmentID")
|
||||||
|
private String equipmentID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备生产商组织机构代码 Y
|
* 设备生产商组织机构代码 Y
|
||||||
*/
|
*/
|
||||||
private String ManufacturerID;
|
@JSONField(name = "ManufacturerID")
|
||||||
|
private String manufacturerID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备型号 N
|
* 设备型号 N
|
||||||
* 由设备生厂商定义的设备型号
|
* 由设备生厂商定义的设备型号
|
||||||
*/
|
*/
|
||||||
private String EquipmentModel;
|
// private String EquipmentModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备名称 N
|
* 设备名称 N
|
||||||
*/
|
*/
|
||||||
private String EquipmentName;
|
// private String EquipmentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备生产日期 N
|
* 设备生产日期 N
|
||||||
* YYYY-MM-DD
|
* YYYY-MM-DD
|
||||||
*/
|
*/
|
||||||
private String ProductionDate;
|
// private String ProductionDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建设时间 Y
|
* 建设时间 Y
|
||||||
* YYYY-MM-DD
|
* YYYY-MM-DD
|
||||||
*/
|
*/
|
||||||
private String ConstructionTime;
|
@JSONField(name = "ConstructionTime")
|
||||||
|
private String constructionTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备类型(1-直流设备;2-交流设备;3-交直流一体设备) Y
|
* 设备类型(1-直流设备;2-交流设备;3-交直流一体设备) Y
|
||||||
*/
|
*/
|
||||||
private Integer EquipmentType;
|
@JSONField(name = "EquipmentType")
|
||||||
|
private Integer equipmentType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备状态 Y
|
* 设备状态 Y
|
||||||
@@ -63,40 +68,45 @@ public class EquipmentInfo {
|
|||||||
* 6:维护中
|
* 6:维护中
|
||||||
* 50:正常使用
|
* 50:正常使用
|
||||||
*/
|
*/
|
||||||
private Integer EquipmentStatus;
|
@JSONField(name = "EquipmentStatus")
|
||||||
|
private Integer equipmentStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 额定功率(单位:kW) Y
|
* 额定功率(单位:kW) Y
|
||||||
*/
|
*/
|
||||||
private BigDecimal EquipmentPower;
|
@JSONField(name = "EquipmentPower")
|
||||||
|
private BigDecimal equipmentPower;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新国标(0-否;1-是) Y
|
* 新国标(0-否;1-是) Y
|
||||||
* 是否新国标
|
* 是否新国标
|
||||||
*/
|
*/
|
||||||
private Integer NewNationalStandard;
|
@JSONField(name = "NewNationalStandard")
|
||||||
|
private Integer newNationalStandard;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备接口列表 Y
|
* 充电设备接口列表 Y
|
||||||
* 该充电设备所有的充电设备接口的信息对象集合
|
* 该充电设备所有的充电设备接口的信息对象集合
|
||||||
*/
|
*/
|
||||||
private List<ConnectorInfo> ConnectorInfos;
|
@JSONField(name = "ConnectorInfos")
|
||||||
|
private List<ConnectorInfo> connectorInfos;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备经度 N
|
* 充电设备经度 N
|
||||||
* GCJ-02坐标系
|
* GCJ-02坐标系
|
||||||
*/
|
*/
|
||||||
private BigDecimal EquipmentLng;
|
// private BigDecimal EquipmentLng;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备纬度 N
|
* 充电设备纬度 N
|
||||||
* GCJ-02坐标系
|
* GCJ-02坐标系
|
||||||
*/
|
*/
|
||||||
private BigDecimal EquipmentLat;
|
// private BigDecimal EquipmentLat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否支持VIN码识别(0-否;1-是) Y
|
* 是否支持VIN码识别(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer VinFlag;
|
@JSONField(name = "VinFlag")
|
||||||
|
private Integer vinFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.jsowell.thirdparty.domain;
|
package com.jsowell.thirdparty.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -21,84 +23,94 @@ public class StationInfo {
|
|||||||
* 充电站ID Y
|
* 充电站ID Y
|
||||||
* 对接平台自定义的唯一编码
|
* 对接平台自定义的唯一编码
|
||||||
*/
|
*/
|
||||||
private String StationID;
|
@JSONField(name = "StationID")
|
||||||
|
private String stationID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对接平台ID Y
|
* 对接平台ID Y
|
||||||
* 组织机构代码
|
* 组织机构代码
|
||||||
*/
|
*/
|
||||||
private String OperatorID;
|
@JSONField(name = "OperatorID")
|
||||||
|
private String operatorID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备所属运营商ID Y
|
* 设备所属运营商ID Y
|
||||||
* 设备所属运营商组织机构代码
|
* 设备所属运营商组织机构代码
|
||||||
*/
|
*/
|
||||||
private String EquipmentOwnerID;
|
@JSONField(name = "EquipmentOwnerID")
|
||||||
|
private String equipmentOwnerID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电站名称 Y
|
* 充电站名称 Y
|
||||||
* 充电站名称的描述
|
* 充电站名称的描述
|
||||||
*/
|
*/
|
||||||
private String StationName;
|
@JSONField(name = "StationName")
|
||||||
|
private String stationName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否独立报桩 (0-否;1-是) Y
|
* 是否独立报桩 (0-否;1-是) Y
|
||||||
* 如果是独立报桩需要填写户号以及容量
|
* 如果是独立报桩需要填写户号以及容量
|
||||||
*/
|
*/
|
||||||
private Integer IsAloneApply;
|
@JSONField(name = "IsAloneApply")
|
||||||
|
private Integer isAloneApply;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 户号 N
|
* 户号 N
|
||||||
* 国网电费账单户号
|
* 国网电费账单户号
|
||||||
*/
|
*/
|
||||||
private String AccountNumber;
|
// private String AccountNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 容量(单位KW) N
|
* 容量(单位KW) N
|
||||||
* 独立电表申请的功率
|
* 独立电表申请的功率
|
||||||
*/
|
*/
|
||||||
private BigDecimal Capacity;
|
// private BigDecimal Capacity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否是公共停车场库 (0-否;1-是) Y
|
* 是否是公共停车场库 (0-否;1-是) Y
|
||||||
* 如果是公共停车场库需要填写场库编号
|
* 如果是公共停车场库需要填写场库编号
|
||||||
*/
|
*/
|
||||||
private Integer IsPublicParkingLot;
|
@JSONField(name = "IsPublicParkingLot")
|
||||||
|
private Integer isPublicParkingLot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停车场库编号 N
|
* 停车场库编号 N
|
||||||
* 公共停车场库编号
|
* 公共停车场库编号
|
||||||
*/
|
*/
|
||||||
private String ParkingLotNumber;
|
// private String ParkingLotNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电站国家代码 Y
|
* 充电站国家代码 Y
|
||||||
* 比如CN
|
* 比如CN
|
||||||
*/
|
*/
|
||||||
private String CountryCode;
|
@JSONField(name = "CountryCode")
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电站省市辖区编码 Y
|
* 充电站省市辖区编码 Y
|
||||||
* 填写内容为参照 GB/T2260-2015
|
* 填写内容为参照 GB/T2260-2015
|
||||||
*/
|
*/
|
||||||
private String AreaCode;
|
@JSONField(name = "AreaCode")
|
||||||
|
private String areaCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 详细地址 Y
|
* 详细地址 Y
|
||||||
*/
|
*/
|
||||||
private String Address;
|
@JSONField(name = "Address")
|
||||||
|
private String address;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点电话 N
|
* 站点电话 N
|
||||||
* 能够联系场站工作人员进行协助的联系电话
|
* 能够联系场站工作人员进行协助的联系电话
|
||||||
*/
|
*/
|
||||||
private String StationTel;
|
// private String StationTel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务电话 Y
|
* 服务电话 Y
|
||||||
* 平台服务电话,例如400 的电话
|
* 平台服务电话,例如400 的电话
|
||||||
*/
|
*/
|
||||||
private String ServiceTel;
|
@JSONField(name = "ServiceTel")
|
||||||
|
private String serviceTel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点类型 Y
|
* 站点类型 Y
|
||||||
@@ -113,7 +125,8 @@ public class StationInfo {
|
|||||||
* 106-单位(专用)
|
* 106-单位(专用)
|
||||||
* 255-其他
|
* 255-其他
|
||||||
*/
|
*/
|
||||||
private Integer StationType;
|
@JSONField(name = "StationType")
|
||||||
|
private Integer stationType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点状态 Y
|
* 站点状态 Y
|
||||||
@@ -123,31 +136,35 @@ public class StationInfo {
|
|||||||
* 6:维护中
|
* 6:维护中
|
||||||
* 50:正常使用
|
* 50:正常使用
|
||||||
*/
|
*/
|
||||||
private Integer StationStatus;
|
@JSONField(name = "StationStatus")
|
||||||
|
private Integer stationStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车位数量 Y
|
* 车位数量 Y
|
||||||
* 可停放进行充电的车位总数(默认:0-未知)
|
* 可停放进行充电的车位总数(默认:0-未知)
|
||||||
*/
|
*/
|
||||||
private Integer ParkNums;
|
@JSONField(name = "ParkNums")
|
||||||
|
private Integer parkNums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 经度 Y
|
* 经度 Y
|
||||||
* GCJ-02坐标系
|
* GCJ-02坐标系
|
||||||
*/
|
*/
|
||||||
private BigDecimal StationLng;
|
@JSONField(name = "StationLng")
|
||||||
|
private BigDecimal stationLng;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 纬度 Y
|
* 纬度 Y
|
||||||
* GCJ-02坐标系
|
* GCJ-02坐标系
|
||||||
*/
|
*/
|
||||||
private BigDecimal StationLat;
|
@JSONField(name = "StationLat")
|
||||||
|
private BigDecimal stationLat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点引导 N
|
* 站点引导 N
|
||||||
* 描述性文字,用于引导车主找到充电车位
|
* 描述性文字,用于引导车主找到充电车位
|
||||||
*/
|
*/
|
||||||
private String SiteGuide;
|
// private String SiteGuide;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建设场所 Y
|
* 建设场所 Y
|
||||||
@@ -168,102 +185,111 @@ public class StationInfo {
|
|||||||
* 15:出租车
|
* 15:出租车
|
||||||
* 255:其他
|
* 255:其他
|
||||||
*/
|
*/
|
||||||
private Integer Construction;
|
@JSONField(name = "Construction")
|
||||||
|
private Integer construction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点照片 N
|
* 站点照片 N
|
||||||
* 充电设备照片、充电车位照片、停车场入口照片
|
* 充电设备照片、充电车位照片、停车场入口照片
|
||||||
*/
|
*/
|
||||||
private List<String> Pictures;
|
// private List<String> Pictures;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用车型描述 N
|
* 使用车型描述 N
|
||||||
* 描述该站点接受的车大小以及类型,如大巴、物流车、私家乘用车、出租车等
|
* 描述该站点接受的车大小以及类型,如大巴、物流车、私家乘用车、出租车等
|
||||||
*/
|
*/
|
||||||
private String MatchCars;
|
// private String MatchCars;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车位楼层及数量描述 N
|
* 车位楼层及数量描述 N
|
||||||
* 车位楼层以及数量信息
|
* 车位楼层以及数量信息
|
||||||
*/
|
*/
|
||||||
private String ParkInfo;
|
// private String ParkInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停车场产权方 N
|
* 停车场产权方 N
|
||||||
* 停车场产权人
|
* 停车场产权人
|
||||||
*/
|
*/
|
||||||
private String ParkOwner;
|
// private String ParkOwner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停车场管理方 N
|
* 停车场管理方 N
|
||||||
* 停车场管理人(如:XX 物业)
|
* 停车场管理人(如:XX 物业)
|
||||||
*/
|
*/
|
||||||
private String ParkManager;
|
// private String ParkManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全天开放 Y
|
* 全天开放 Y
|
||||||
* 是否全天开放(0-否;1-是),如果为0,则营业时间必填
|
* 是否全天开放(0-否;1-是),如果为0,则营业时间必填
|
||||||
*/
|
*/
|
||||||
private Integer OpenAllDay;
|
@JSONField(name = "OpenAllDay")
|
||||||
|
private Integer openAllDay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 营业时间 N
|
* 营业时间 N
|
||||||
* 营业时间描述,推荐格式:周一至周日00:00-24:00
|
* 营业时间描述,推荐格式:周一至周日00:00-24:00
|
||||||
*/
|
*/
|
||||||
private String BusinessHours;
|
// private String BusinessHours;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最低单价 Y
|
* 最低单价 Y
|
||||||
* 最低充电电费率
|
* 最低充电电费率
|
||||||
*/
|
*/
|
||||||
private BigDecimal MinElectricityPrice;
|
@JSONField(name = "MinElectricityPrice")
|
||||||
|
private BigDecimal minElectricityPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电电费率 Y
|
* 充电电费率 Y
|
||||||
* 充电费描述,推荐格式:XX 元/度
|
* 充电费描述,推荐格式:XX 元/度
|
||||||
*/
|
*/
|
||||||
private String ElectricityFee;
|
@JSONField(name = "ElectricityFee")
|
||||||
|
private String electricityFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务费率 Y
|
* 服务费率 Y
|
||||||
* 服务费率描述,推荐格式:XX 元/度
|
* 服务费率描述,推荐格式:XX 元/度
|
||||||
*/
|
*/
|
||||||
private String ServiceFee;
|
@JSONField(name = "ServiceFee")
|
||||||
|
private String serviceFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 免费停车 Y
|
* 免费停车 Y
|
||||||
* 是否停车免费(0-否;1-是)
|
* 是否停车免费(0-否;1-是)
|
||||||
*/
|
*/
|
||||||
private Integer ParkFree;
|
@JSONField(name = "ParkFree")
|
||||||
|
private Integer parkFree;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停车费 N
|
* 停车费 N
|
||||||
* 停车费率描述
|
* 停车费率描述
|
||||||
*/
|
*/
|
||||||
private String ParkFee;
|
// private String ParkFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式 Y
|
* 支付方式 Y
|
||||||
* 支付方式:刷卡、线上、现金 其中电子钱包类卡为刷卡,身份鉴权卡、微信/ 支付宝、APP为线上
|
* 支付方式:刷卡、线上、现金 其中电子钱包类卡为刷卡,身份鉴权卡、微信/ 支付宝、APP为线上
|
||||||
*/
|
*/
|
||||||
private String Payment;
|
@JSONField(name = "Payment")
|
||||||
|
private String payment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否支持预约 Y
|
* 是否支持预约 Y
|
||||||
* 充电设备是否需要提前预约后才能使用。(0-不支持预约;1-支持预约) 不填默认为0
|
* 充电设备是否需要提前预约后才能使用。(0-不支持预约;1-支持预约) 不填默认为0
|
||||||
*/
|
*/
|
||||||
private Integer SupportOrder;
|
@JSONField(name = "SupportOrder")
|
||||||
|
private Integer supportOrder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注 N
|
* 备注 N
|
||||||
* 其他备注信息
|
* 其他备注信息
|
||||||
*/
|
*/
|
||||||
private String Remark;
|
// private String Remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充电设备信息列表 Y
|
* 充电设备信息列表 Y
|
||||||
* 该充电站所有充电设备信息对象集合
|
* 该充电站所有充电设备信息对象集合
|
||||||
*/
|
*/
|
||||||
|
@JSONField(name = "EquipmentInfos")
|
||||||
private List<EquipmentInfo> equipmentInfos;
|
private List<EquipmentInfo> equipmentInfos;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -273,46 +299,55 @@ public class StationInfo {
|
|||||||
* 2:限时免费;
|
* 2:限时免费;
|
||||||
* 3:充电限免
|
* 3:充电限免
|
||||||
*/
|
*/
|
||||||
private Integer ParkFeeType;
|
@JSONField(name = "ParkFeeType")
|
||||||
|
private Integer parkFeeType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否靠近卫生间(0-否;1-是) Y
|
* 是否靠近卫生间(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer ToiletFlag;
|
@JSONField(name = "ToiletFlag")
|
||||||
|
private Integer toiletFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否靠近便利店(0-否;1-是) Y
|
* 是否靠近便利店(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer StoreFlag;
|
@JSONField(name = "StoreFlag")
|
||||||
|
private Integer storeFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否靠近餐厅(0-否;1-是) Y
|
* 是否靠近餐厅(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer RestaurantFlag;
|
@JSONField(name = "RestaurantFlag")
|
||||||
|
private Integer restaurantFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否靠近休息室(0-否;1-是) Y
|
* 是否靠近休息室(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer LoungeFlag;
|
@JSONField(name = "LoungeFlag")
|
||||||
|
private Integer loungeFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有雨棚(0-否;1-是) Y
|
* 是否有雨棚(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer CanopyFlag;
|
@JSONField(name = "CanopyFlag")
|
||||||
|
private Integer canopyFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有小票机(0-否;1-是) Y
|
* 是否有小票机(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer PrinterFlag;
|
@JSONField(name = "PrinterFlag")
|
||||||
|
private Integer printerFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有道闸(0-否;1-是) Y
|
* 是否有道闸(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer BarrierFlag;
|
@JSONField(name = "BarrierFlag")
|
||||||
|
private Integer barrierFlag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有地锁(0-否;1-是) Y
|
* 是否有地锁(0-否;1-是) Y
|
||||||
*/
|
*/
|
||||||
private Integer ParkingLockFlag;
|
@JSONField(name = "ParkingLockFlag")
|
||||||
|
private Integer parkingLockFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package com.jsowell.thirdparty.service;
|
package com.jsowell.thirdparty.service;
|
||||||
|
|
||||||
import com.jsowell.pile.dto.LianLianGetTokenDTO;
|
import com.jsowell.pile.dto.*;
|
||||||
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
|
||||||
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
|
||||||
import com.jsowell.thirdparty.domain.StationStatsInfo;
|
import com.jsowell.thirdparty.domain.StationStatsInfo;
|
||||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
|
||||||
import com.jsowell.thirdparty.vo.*;
|
import com.jsowell.thirdparty.vo.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -21,7 +18,7 @@ public interface LianLianService {
|
|||||||
* 根据充电站id,推送充电站信息
|
* 根据充电站id,推送充电站信息
|
||||||
* @param stationId
|
* @param stationId
|
||||||
*/
|
*/
|
||||||
void pushStationInfo(Long stationId) throws Exception;
|
void pushStationInfo(LianLianPushStationInfoDTO dto);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 联联平台获取充电站信息
|
* 联联平台获取充电站信息
|
||||||
@@ -75,5 +72,10 @@ public interface LianLianService {
|
|||||||
*/
|
*/
|
||||||
QueryStopChargeVO query_stop_charge(QueryStartChargeDTO dto);
|
QueryStopChargeVO query_stop_charge(QueryStartChargeDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联联平台获取令牌
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
String getToken(LianLianGetTokenDTO dto);
|
String getToken(LianLianGetTokenDTO dto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,23 +9,19 @@ import com.github.pagehelper.PageInfo;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.jsowell.common.constant.Constants;
|
import com.jsowell.common.constant.Constants;
|
||||||
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
||||||
|
import com.jsowell.common.enums.LianLianPileStatusEnum;
|
||||||
|
import com.jsowell.common.enums.StationPaymentEnum;
|
||||||
import com.jsowell.common.enums.ykc.OrderStatusEnum;
|
import com.jsowell.common.enums.ykc.OrderStatusEnum;
|
||||||
import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum;
|
import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum;
|
||||||
|
import com.jsowell.common.enums.ykc.PileStatusEnum;
|
||||||
import com.jsowell.common.exception.BusinessException;
|
import com.jsowell.common.exception.BusinessException;
|
||||||
import com.jsowell.common.util.*;
|
import com.jsowell.common.util.*;
|
||||||
import com.jsowell.common.util.http.HttpUtils;
|
import com.jsowell.common.util.lianlian.*;
|
||||||
import com.jsowell.common.util.lianlian.Cryptos;
|
|
||||||
import com.jsowell.common.util.lianlian.Encodes;
|
|
||||||
import com.jsowell.common.util.lianlian.GBSignUtils;
|
|
||||||
import com.jsowell.common.util.lianlian.LianLianUtils;
|
|
||||||
import com.jsowell.netty.command.ykc.StartChargingCommand;
|
import com.jsowell.netty.command.ykc.StartChargingCommand;
|
||||||
import com.jsowell.netty.command.ykc.StopChargingCommand;
|
import com.jsowell.netty.command.ykc.StopChargingCommand;
|
||||||
import com.jsowell.netty.service.yunkuaichong.YKCPushCommandService;
|
import com.jsowell.netty.service.yunkuaichong.YKCPushCommandService;
|
||||||
import com.jsowell.pile.domain.*;
|
import com.jsowell.pile.domain.*;
|
||||||
import com.jsowell.pile.dto.LianLianGetTokenDTO;
|
import com.jsowell.pile.dto.*;
|
||||||
import com.jsowell.pile.dto.QueryEquipmentDTO;
|
|
||||||
import com.jsowell.pile.dto.QueryStartChargeDTO;
|
|
||||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
|
||||||
import com.jsowell.pile.service.IOrderBasicInfoService;
|
import com.jsowell.pile.service.IOrderBasicInfoService;
|
||||||
import com.jsowell.pile.service.IPileBasicInfoService;
|
import com.jsowell.pile.service.IPileBasicInfoService;
|
||||||
import com.jsowell.pile.service.IPileConnectorInfoService;
|
import com.jsowell.pile.service.IPileConnectorInfoService;
|
||||||
@@ -98,70 +94,83 @@ public class LianLianServiceImpl implements LianLianService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据站点id推送站点信息
|
* 根据站点id推送站点信息
|
||||||
* @param stationId
|
* @param dto
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void pushStationInfo(Long stationId) throws Exception {
|
public void pushStationInfo(LianLianPushStationInfoDTO dto){
|
||||||
|
// String OperatorID = "987654321";
|
||||||
|
// String SigSecret = "1234567890abcdef"; // 签名秘钥
|
||||||
|
// String DataSecret = "1234567890abcdef"; // 消息密钥
|
||||||
|
// String DataSecretIV = "1234567890abcdef"; // 消息密钥初始化向量
|
||||||
|
// String token = "c548f9276c1c4ea8b88b1f7b1eb7cf07"; //QueryToken类查询接口获取到的token
|
||||||
|
|
||||||
// 通过id查询站点相关信息
|
// 通过id查询站点相关信息
|
||||||
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
|
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(dto.getStationId());
|
||||||
// 组装联联平台所需要的数据格式
|
// 组装联联平台所需要的数据格式
|
||||||
StationInfo info = StationInfo.builder()
|
StationInfo info = StationInfo.builder()
|
||||||
.StationID(String.valueOf(stationId))
|
.stationID(String.valueOf(dto.getStationId()))
|
||||||
.OperatorID(Constants.OPERATORID_LIANLIAN)
|
.operatorID(dto.getOperatorID())
|
||||||
.EquipmentOwnerID(Constants.OPERATORID_LIANLIAN)
|
.equipmentOwnerID(Constants.OPERATORID_LIANLIAN)
|
||||||
.StationName(pileStationInfo.getStationName())
|
.stationName(pileStationInfo.getStationName())
|
||||||
.IsAloneApply(Integer.valueOf(pileStationInfo.getAloneApply()))
|
.isAloneApply(Integer.valueOf(pileStationInfo.getAloneApply()))
|
||||||
.IsPublicParkingLot(Integer.valueOf(pileStationInfo.getPublicParking()))
|
.isPublicParkingLot(Integer.valueOf(pileStationInfo.getPublicParking()))
|
||||||
.CountryCode(pileStationInfo.getCountryCode())
|
.countryCode(pileStationInfo.getCountryCode())
|
||||||
.AreaCode(pileStationInfo.getAreaCode())
|
.areaCode(pileStationInfo.getAreaCode())
|
||||||
.Address(pileStationInfo.getAddress())
|
.address(pileStationInfo.getAddress())
|
||||||
.ServiceTel(pileStationInfo.getServiceTel())
|
.serviceTel(pileStationInfo.getStationTel())
|
||||||
.StationType(Integer.valueOf(pileStationInfo.getStationType()))
|
.stationType(Integer.valueOf(pileStationInfo.getStationType()))
|
||||||
.StationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
|
.stationStatus(Integer.valueOf(pileStationInfo.getStationStatus()))
|
||||||
.ParkNums(Integer.valueOf(pileStationInfo.getParkNums()))
|
.parkNums(Integer.valueOf(pileStationInfo.getParkNums()))
|
||||||
.StationLng(new BigDecimal(pileStationInfo.getStationLng()))
|
.stationLng(new BigDecimal(pileStationInfo.getStationLng()))
|
||||||
.StationLat(new BigDecimal(pileStationInfo.getStationLat()))
|
.stationLat(new BigDecimal(pileStationInfo.getStationLat()))
|
||||||
.Construction(Integer.valueOf(pileStationInfo.getConstruction()))
|
.construction(Integer.valueOf(pileStationInfo.getConstruction()))
|
||||||
.OpenAllDay(Integer.valueOf(pileStationInfo.getOpenAllDay()))
|
.openAllDay(Integer.valueOf(pileStationInfo.getOpenAllDay()))
|
||||||
// .MinElectricityPrice()
|
.minElectricityPrice(new BigDecimal(Constants.ZERO))
|
||||||
// .ElectricityFee()
|
.electricityFee(Constants.ZERO)
|
||||||
// .ServiceFee()
|
.serviceFee(Constants.ZERO)
|
||||||
.ParkFree(Integer.valueOf(pileStationInfo.getParkFree()))
|
.parkFree(Integer.valueOf(pileStationInfo.getParkFree()))
|
||||||
// .ParkFee()
|
// .ParkFee("2")
|
||||||
.Payment(pileStationInfo.getPayment())
|
// .payment("线上")
|
||||||
.SupportOrder(Integer.valueOf(pileStationInfo.getSupportOrder()))
|
.supportOrder(Integer.valueOf(pileStationInfo.getSupportOrder()))
|
||||||
// .equipmentInfos()
|
// .equipmentInfos()
|
||||||
// .ParkFeeType()
|
.parkFeeType(0)
|
||||||
.ToiletFlag(Integer.valueOf(pileStationInfo.getToiletFlag()))
|
.toiletFlag(Integer.valueOf(pileStationInfo.getToiletFlag()))
|
||||||
.StoreFlag(Integer.valueOf(pileStationInfo.getStoreFlag()))
|
.storeFlag(Integer.valueOf(pileStationInfo.getStoreFlag()))
|
||||||
.RestaurantFlag(Integer.valueOf(pileStationInfo.getRestaurantFlag()))
|
.restaurantFlag(Integer.valueOf(pileStationInfo.getRestaurantFlag()))
|
||||||
.LoungeFlag(Integer.valueOf(pileStationInfo.getLoungeFlag()))
|
.loungeFlag(Integer.valueOf(pileStationInfo.getLoungeFlag()))
|
||||||
.CanopyFlag(Integer.valueOf(pileStationInfo.getCanopyFlag()))
|
.canopyFlag(Integer.valueOf(pileStationInfo.getCanopyFlag()))
|
||||||
.PrinterFlag(Integer.valueOf(pileStationInfo.getPrinterFlag()))
|
.printerFlag(Integer.valueOf(pileStationInfo.getPrinterFlag()))
|
||||||
.BarrierFlag(Integer.valueOf(pileStationInfo.getBarrierFlag()))
|
.barrierFlag(Integer.valueOf(pileStationInfo.getBarrierFlag()))
|
||||||
.ParkingLockFlag(Integer.valueOf(pileStationInfo.getParkingLockFlag()))
|
.parkingLockFlag(Integer.valueOf(pileStationInfo.getParkingLockFlag()))
|
||||||
|
|
||||||
.build();
|
.build();
|
||||||
|
String payment = StationPaymentEnum.getPaymentByCode(pileStationInfo.getPayment());
|
||||||
|
info.setPayment(payment);
|
||||||
List<EquipmentInfo> pileList = getPileList(pileStationInfo);
|
List<EquipmentInfo> pileList = getPileList(pileStationInfo);
|
||||||
if (CollectionUtils.isNotEmpty(pileList)) {
|
if (CollectionUtils.isNotEmpty(pileList)) {
|
||||||
info.setEquipmentInfos(pileList); // 充电设备信息列表
|
info.setEquipmentInfos(pileList); // 充电设备信息列表
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用联联平台接口
|
// 调用联联平台接口
|
||||||
String url = "http://dataexchange.evchargeonline.com:81/shevcs/v1/" + "notification_stationInfo";
|
String url = "http://testdataexchange.evchargeonline.com:82/shevcs/v1/" + "notification_stationInfo";
|
||||||
|
|
||||||
JSONObject jsonObject = new JSONObject();
|
String jsonStr = JSONObject.toJSONString(info);
|
||||||
// Map<String, Object> map = new HashMap<>();
|
JSONObject data = new JSONObject();
|
||||||
jsonObject.put("StationInfo", info);
|
data.put("StationInfo", jsonStr);
|
||||||
String s = HttpUtils.sendPost(url, jsonObject.toJSONString());
|
|
||||||
|
|
||||||
System.out.println(s);
|
String jsonString = JSONObject.toJSONString(data);
|
||||||
|
System.out.println("jsonString : " + jsonString);
|
||||||
|
|
||||||
|
String result = HttpRequestUtil.sendPost(dto.getToken(), jsonString, url, dto.getDataSecret()
|
||||||
|
, dto.getDataSecretIV(), dto.getOperatorID(), dto.getSigSecret());
|
||||||
|
|
||||||
|
System.out.println(result);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args){
|
||||||
|
BigDecimal bigDecimal = new BigDecimal("7").setScale(1, BigDecimal.ROUND_HALF_UP);
|
||||||
|
System.out.println(bigDecimal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -194,7 +203,7 @@ public class LianLianServiceImpl implements LianLianService {
|
|||||||
stationInfo.setCountryCode(pileStationInfo.getCountryCode());
|
stationInfo.setCountryCode(pileStationInfo.getCountryCode());
|
||||||
stationInfo.setAreaCode(pileStationInfo.getAreaCode());
|
stationInfo.setAreaCode(pileStationInfo.getAreaCode());
|
||||||
stationInfo.setAddress(pileStationInfo.getAddress());
|
stationInfo.setAddress(pileStationInfo.getAddress());
|
||||||
stationInfo.setServiceTel(pileStationInfo.getServiceTel());
|
stationInfo.setServiceTel(pileStationInfo.getStationTel());
|
||||||
stationInfo.setStationType(Integer.valueOf(pileStationInfo.getStationType()));
|
stationInfo.setStationType(Integer.valueOf(pileStationInfo.getStationType()));
|
||||||
stationInfo.setParkNums(Integer.valueOf(pileStationInfo.getParkNums()));
|
stationInfo.setParkNums(Integer.valueOf(pileStationInfo.getParkNums()));
|
||||||
stationInfo.setStationLng(new BigDecimal(pileStationInfo.getStationLng()));
|
stationInfo.setStationLng(new BigDecimal(pileStationInfo.getStationLng()));
|
||||||
@@ -644,15 +653,27 @@ public class LianLianServiceImpl implements LianLianService {
|
|||||||
String pileSn = pileBasicInfo.getSn();
|
String pileSn = pileBasicInfo.getSn();
|
||||||
|
|
||||||
equipmentInfo.setEquipmentID(pileSn);
|
equipmentInfo.setEquipmentID(pileSn);
|
||||||
equipmentInfo.setManufacturerID(merchantInfo.getOrganizationCode());
|
equipmentInfo.setManufacturerID(Constants.OPERATORID_LIANLIAN);
|
||||||
equipmentInfo.setConstructionTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, pileBasicInfo.getCreateTime()));
|
equipmentInfo.setConstructionTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, pileBasicInfo.getCreateTime()));
|
||||||
|
|
||||||
PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn);
|
PileModelInfoVO modelInfo = pileModelInfoService.getPileModelInfoByPileSn(pileSn);
|
||||||
equipmentInfo.setEquipmentType(Integer.valueOf(modelInfo.getSpeedType()));
|
equipmentInfo.setEquipmentType(Integer.valueOf(modelInfo.getSpeedType()));
|
||||||
|
|
||||||
// Map<String, String> pileStatus = pileConnectorInfoService.getPileStatus(Lists.newArrayList(pileBasicInfo.getSn()));
|
// Map<String, String> pileStatus = pileConnectorInfoService.getPileStatus(Lists.newArrayList(pileBasicInfo.getSn()));
|
||||||
equipmentInfo.setEquipmentStatus(50);
|
Map<String, String> pileStatusMap = pileConnectorInfoService.getPileStatus(Lists.newArrayList(pileSn));
|
||||||
equipmentInfo.setEquipmentPower(new BigDecimal(modelInfo.getRatedPower()));
|
String pileStatus = pileStatusMap.get(pileSn);
|
||||||
|
if (StringUtils.equals(PileStatusEnum.ON_LINE.getValue(), pileStatus)) {
|
||||||
|
// 1-在线
|
||||||
|
pileStatus = LianLianPileStatusEnum.NORMAL.getCode();
|
||||||
|
} else if (StringUtils.equals(PileStatusEnum.OFF_LINE.getValue(), pileStatus)) {
|
||||||
|
// 2-离线
|
||||||
|
pileStatus = LianLianPileStatusEnum.CLOSE_OFFLINE.getCode();
|
||||||
|
} else if (StringUtils.equals(PileStatusEnum.FAULT.getValue(), pileStatus)) {
|
||||||
|
// 3-故障
|
||||||
|
pileStatus = LianLianPileStatusEnum.UNDER_MAINTENANCE.getCode();
|
||||||
|
}
|
||||||
|
equipmentInfo.setEquipmentStatus(Integer.valueOf(pileStatus));
|
||||||
|
equipmentInfo.setEquipmentPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
|
||||||
equipmentInfo.setNewNationalStandard(1);
|
equipmentInfo.setNewNationalStandard(1);
|
||||||
equipmentInfo.setVinFlag(1);
|
equipmentInfo.setVinFlag(1);
|
||||||
|
|
||||||
@@ -686,7 +707,7 @@ public class LianLianServiceImpl implements LianLianService {
|
|||||||
connectorInfo.setVoltageUpperLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
connectorInfo.setVoltageUpperLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
||||||
connectorInfo.setVoltageLowerLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
connectorInfo.setVoltageLowerLimits(Integer.valueOf(modelInfo.getRatedVoltage()));
|
||||||
connectorInfo.setCurrent(Integer.valueOf(modelInfo.getRatedCurrent()));
|
connectorInfo.setCurrent(Integer.valueOf(modelInfo.getRatedCurrent()));
|
||||||
connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()));
|
connectorInfo.setPower(new BigDecimal(modelInfo.getRatedPower()).setScale(1, BigDecimal.ROUND_HALF_UP));
|
||||||
|
|
||||||
resultList.add(connectorInfo);
|
resultList.add(connectorInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,144 +1,132 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h1>电桩</h1>
|
<!-- <h1>电桩</h1>-->
|
||||||
<hr />
|
<!-- <hr />-->
|
||||||
<el-table
|
<!-- <el-table-->
|
||||||
stripe
|
<!-- stripe-->
|
||||||
border
|
<!-- border-->
|
||||||
:data="tableData"
|
<!-- :data="tableData"-->
|
||||||
style="width: 100%">
|
<!-- style="width: 100%">-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
label="序号"
|
<!-- label="序号"-->
|
||||||
type="index"
|
<!-- type="index"-->
|
||||||
>
|
<!-- >-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="pileSn"
|
<!-- prop="pileSn"-->
|
||||||
label="编号">
|
<!-- label="编号">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="stationName"
|
<!-- prop="stationName"-->
|
||||||
label="名称"
|
<!-- label="名称"-->
|
||||||
>
|
<!-- >-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="stationAddress"
|
<!-- prop="stationAddress"-->
|
||||||
label="电站">
|
<!-- label="电站">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="type"
|
<!-- prop="type"-->
|
||||||
label="接口">
|
<!-- label="接口">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="power"
|
<!-- prop="power"-->
|
||||||
label="功率">
|
<!-- label="功率">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="degree"
|
<!-- prop="degree"-->
|
||||||
label="度数">
|
<!-- label="度数">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="electricityPrice"
|
<!-- prop="electricityPrice"-->
|
||||||
label="电费">
|
<!-- label="电费">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="servicePrice"
|
<!-- prop="servicePrice"-->
|
||||||
label="服务费">
|
<!-- label="服务费">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="chargingNumber"
|
<!-- prop="chargingNumber"-->
|
||||||
label="充电次数">
|
<!-- label="充电次数">-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
</el-table>
|
<!-- </el-table>-->
|
||||||
<h1>概况</h1>
|
<h1>概况</h1>
|
||||||
<hr />
|
<hr />
|
||||||
<el-row :gutter="24">
|
<div style="display: flex;justify-content: space-between">
|
||||||
<el-col :span="4" :xs="24">
|
<div class="box">
|
||||||
<div class="box">
|
<div>总充电电量</div>
|
||||||
<div>总充电电量</div>
|
<div class="box-text">
|
||||||
<div class="box-text">
|
<b class="box-h1">{{ generalSituation.totalChargingDegree }}</b>
|
||||||
<b class="box-h1">{{ generalSituation.totalChargingDegree }}</b>
|
<i>度</i>
|
||||||
<i>度</i>
|
<el-image
|
||||||
<el-image
|
style="width: 80px; height: 80px"
|
||||||
style="width: 80px; height: 80px"
|
:src="require('@/assets/images/lightning.png')"
|
||||||
:src="require('@/assets/images/lightning.png')"
|
></el-image>
|
||||||
></el-image>
|
|
||||||
</div>
|
|
||||||
<div class="progress"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="progress"></div>
|
||||||
<el-col :span="4" :xs="24">
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div>总充电费用</div>
|
<div>总充电费用</div>
|
||||||
<div class="box-text">
|
<div class="box-text">
|
||||||
<b class="box-h1">{{ generalSituation.totalChargingAmount }}</b>
|
<b class="box-h1">{{ generalSituation.totalChargingAmount }}</b>
|
||||||
<i>元</i>
|
<i>元</i>
|
||||||
<!-- <image src="/assets/images/login-background.jpg"></image> -->
|
<!-- <image src="/assets/images/login-background.jpg"></image> -->
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 80px; height: 80px"
|
style="width: 80px; height: 80px"
|
||||||
:src="require('@/assets/images/zongfeiyong.png')"
|
:src="require('@/assets/images/zongfeiyong.png')"
|
||||||
></el-image>
|
></el-image>
|
||||||
</div>
|
|
||||||
<div class="progress"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="progress"></div>
|
||||||
<el-col :span="4" :xs="24">
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div>总充电订单数</div>
|
<div>总充电订单数</div>
|
||||||
<div class="box-text">
|
<div class="box-text">
|
||||||
<b class="box-h1">{{ generalSituation.totalChargingQuantity }}</b>
|
<b class="box-h1">{{ generalSituation.totalChargingQuantity }}</b>
|
||||||
<i>笔</i>
|
<i>笔</i>
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 80px; height: 80px"
|
style="width: 80px; height: 80px"
|
||||||
:src="require('@/assets/images/dingdan.png')"
|
:src="require('@/assets/images/dingdan.png')"
|
||||||
></el-image>
|
></el-image>
|
||||||
</div>
|
|
||||||
<div class="progress"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="progress"></div>
|
||||||
<el-col :span="4" :xs="24">
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div>总充电设备数量</div>
|
<div>总充电设备数量</div>
|
||||||
<div class="box-text">
|
<div class="box-text">
|
||||||
<b class="box-h1">{{ generalSituation.totalPileQuantity }}</b>
|
<b class="box-h1">{{ generalSituation.totalPileQuantity }}</b>
|
||||||
<i>座</i>
|
<i>座</i>
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 80px; height: 80px"
|
style="width: 80px; height: 80px"
|
||||||
:src="require('@/assets/images/shebei.png')"
|
:src="require('@/assets/images/shebei.png')"
|
||||||
></el-image>
|
></el-image>
|
||||||
</div>
|
|
||||||
<div class="progress"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="progress"></div>
|
||||||
<el-col :span="4" :xs="24" v-hasRole="['admin', 'common']">
|
</div>
|
||||||
<div class="box" >
|
<div class="box" v-hasRole="['admin', 'common']">
|
||||||
<div>总客户余额</div>
|
<div>总客户余额</div>
|
||||||
<div class="box-text">
|
<div class="box-text">
|
||||||
<b class="box-h1">{{ generalSituation.totalMemberAmount }}</b>
|
<b class="box-h1">{{ generalSituation.totalMemberAmount }}</b>
|
||||||
<i>元</i>
|
<i>元</i>
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 80px; height: 80px"
|
style="width: 80px; height: 80px"
|
||||||
:src="require('@/assets/images/yue.png')"
|
:src="require('@/assets/images/yue.png')"
|
||||||
></el-image>
|
></el-image>
|
||||||
</div>
|
|
||||||
<div class="progress"></div></div
|
|
||||||
>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4" :xs="24">
|
|
||||||
<div class="box">
|
|
||||||
<div>总服务费金额</div>
|
|
||||||
<div class="box-text">
|
|
||||||
<b class="box-h1">{{ generalSituation.totalPileQuantity }}</b>
|
|
||||||
<i>元</i>
|
|
||||||
<el-image
|
|
||||||
style="width: 80px; height: 80px"
|
|
||||||
:src="require('@/assets/images/shebei.png')"
|
|
||||||
></el-image>
|
|
||||||
</div>
|
|
||||||
<div class="progress"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="progress"></div></div
|
||||||
</el-row>
|
>
|
||||||
|
<div class="box">
|
||||||
|
<div>总服务费金额</div>
|
||||||
|
<div class="box-text">
|
||||||
|
<b class="box-h1">{{ generalSituation.totalPileQuantity }}</b>
|
||||||
|
<i>元</i>
|
||||||
|
<el-image
|
||||||
|
style="width: 80px; height: 80px"
|
||||||
|
:src="require('@/assets/images/shebei.png')"
|
||||||
|
></el-image>
|
||||||
|
</div>
|
||||||
|
<div class="progress"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<h1>订单</h1>
|
<h1>订单</h1>
|
||||||
<hr />
|
<hr />
|
||||||
<el-button style="background-color: #1ab394; color: #ffffff"
|
<el-button style="background-color: #1ab394; color: #ffffff"
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
<el-tab-pane label="全部">
|
<el-tab-pane label="全部">
|
||||||
<home-index></home-index>
|
<home-index></home-index>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="今日">今日</el-tab-pane>
|
<!-- <el-tab-pane label="今日">今日</el-tab-pane>-->
|
||||||
<el-tab-pane label="运营数据大屏">运营数据大屏</el-tab-pane>
|
<!-- <el-tab-pane label="运营数据大屏">运营数据大屏</el-tab-pane>-->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -12,14 +12,15 @@
|
|||||||
<el-card class="cardStyle">
|
<el-card class="cardStyle">
|
||||||
<h3>开票明细</h3>
|
<h3>开票明细</h3>
|
||||||
<el-descriptions :column="1" border>
|
<el-descriptions :column="1" border>
|
||||||
<el-descriptions-item label="单位" labelStyle="width: 80px" contentStyle="width: 150px">{{ invoiceTitle.titleName }}</el-descriptions-item>
|
<el-descriptions-item label="抬头类型">{{ invoiceTitle.titleType }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="名称" labelStyle="width: 80px" contentStyle="width: 150px">{{ invoiceTitle.titleName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="税号">{{ invoiceTitle.taxId }}</el-descriptions-item>
|
<el-descriptions-item label="税号">{{ invoiceTitle.taxId }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="地址">{{ invoiceTitle.unitAddress }}</el-descriptions-item>
|
<el-descriptions-item label="地址">{{ invoiceTitle.unitAddress }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<div class="marginTop"></div>
|
<div class="marginTop"></div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="cardStyle">
|
<el-card class="cardStyle">
|
||||||
<h3>申请订单明细</h3>
|
<h3>关联申请订单明细</h3>
|
||||||
<el-table :data="orderList" border show-summary style="width: 100%">
|
<el-table :data="orderList" border show-summary style="width: 100%">
|
||||||
<el-table-column prop="orderCode" label="订单号" align="center" width="180"></el-table-column>
|
<el-table-column prop="orderCode" label="订单号" align="center" width="180"></el-table-column>
|
||||||
<el-table-column prop="totalElectricityAmount" align="center" label="电费总金额"></el-table-column>
|
<el-table-column prop="totalElectricityAmount" align="center" label="电费总金额"></el-table-column>
|
||||||
|
|||||||
@@ -31,9 +31,9 @@
|
|||||||
<billing ref="billing" :stationId="stationId"/>
|
<billing ref="billing" :stationId="stationId"/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="客户管理" name="member">
|
<!-- <el-tab-pane label="客户管理" name="member">-->
|
||||||
角色管理
|
<!-- 角色管理-->
|
||||||
</el-tab-pane>
|
<!-- </el-tab-pane>-->
|
||||||
|
|
||||||
<el-tab-pane label="运营管理" name="operation">
|
<el-tab-pane label="运营管理" name="operation">
|
||||||
<el-form>
|
<el-form>
|
||||||
|
|||||||
Reference in New Issue
Block a user