ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -1,6 +1,7 @@ package com.ruoyi.integration.drainage; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.common.core.domain.R; @@ -19,17 +20,12 @@ import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import com.ruoyi.other.api.domain.Operator; import com.ruoyi.other.api.feignClient.OperatorClient; import com.ruoyi.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; @@ -73,9 +69,7 @@ @Resource private TokenUtil tokenUtil; private static Map<Long, Integer> map = new HashMap<>(); @Resource private ParkingLotClient parkingLotClient; @@ -96,25 +90,8 @@ baseResult.setMsg("成功"); baseResult.setOperatorID(baseRequest.getOperatorID()); Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); Integer integer = map.get(mapKey); if(null == integer){ integer = 1; }else{ integer++; } map.put(mapKey, integer); baseResult.setTimeStamp(mapKey); baseResult.setSeq(String.format("%04d", integer)); //清空小于当前时间的map中的无效数据 Set<Long> set = map.keySet(); Iterator<Long> iterator = set.iterator(); while (iterator.hasNext()){ Long k = iterator.next(); if(k <= (mapKey - 10)){ map.remove(k); } } baseResult.setSeq("0001"); //校验token和签名 String operatorID = baseRequest.getOperatorID(); String sig = baseRequest.getSig(); @@ -135,7 +112,7 @@ } //校验token if(tokenCheck){ LoginUser loginUser = tokenUtil.getLoginUser(request); Operator loginUser = tokenUtil.getLoginUser(request); if(null == loginUser){ baseResult.setRet(4002); baseResult.setMsg("身份校验失败,无效的token"); @@ -147,7 +124,7 @@ baseResult.setOperator(operator); baseRequest.setOperator(operator); //校验签名 String sign = TCECUtil.buildSign(baseRequest); String sign = TCECUtil.ourBuildSign(baseRequest); if(!sign.equals(sig)){ baseResult.setRet(4001); baseResult.setMsg("签名校验失败"); @@ -178,7 +155,7 @@ queryTokenResult.setSuccStat(1); queryTokenResult.setFailReason(1); //参数加密 String jsonString = JSON.toJSONString(queryTokenResult); String jsonString = JacksonUtils.toJson(queryTokenResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -186,13 +163,13 @@ } //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryToken queryToken = JSON.parseObject(decrypt, QueryToken.class); if(!queryToken.getOperatorSecret().equals(operator.getOperatorSecret())){ if(!queryToken.getOperatorSecret().equals(operator.getOurOperatorSecret())){ queryTokenResult.setSuccStat(1); queryTokenResult.setFailReason(2); //参数加密 String jsonString = JSON.toJSONString(queryTokenResult); String jsonString = JacksonUtils.toJson(queryTokenResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -203,13 +180,14 @@ Map<String, Object> token = tokenUtil.createToken(operator); String access_token = token.get("access_token").toString(); Long expires_in = Long.valueOf(token.get("expires_in").toString()); queryTokenResult.setOperatorID("906171535"); queryTokenResult.setSuccStat(0); queryTokenResult.setFailReason(0); queryTokenResult.setAccessToken(access_token); queryTokenResult.setTokenAvailableTime(expires_in * 60); //参数加密 String jsonString = JSON.toJSONString(queryTokenResult); String jsonString = JacksonUtils.toJson(queryTokenResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -235,7 +213,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); Integer pageNo = queryStationsInfo.getPageNo(); Integer pageSize = queryStationsInfo.getPageSize(); @@ -253,7 +231,7 @@ queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); //参数加密 String jsonString = JSON.toJSONString(queryStationsInfoResult); String jsonString = JacksonUtils.toJson(queryStationsInfoResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -276,8 +254,8 @@ for (Site datum : sites) { StationInfo stationInfo = new StationInfo(); stationInfo.setStationID(datum.getId().toString()); stationInfo.setOperatorID(""); stationInfo.setEquipmentOwnerID("91510903906171535D"); stationInfo.setOperatorID("906171535"); stationInfo.setEquipmentOwnerID("906171535"); stationInfo.setStationName(datum.getName()); stationInfo.setCountryCode(datum.getCountryCode()); stationInfo.setAreaCode(datum.getDistrictsCode()); @@ -320,7 +298,7 @@ stationInfo.setStationLat(new BigDecimal(datum.getLat()).setScale(6, RoundingMode.DOWN)); stationInfo.setStationLng(new BigDecimal(datum.getLon()).setScale(6, RoundingMode.DOWN)); stationInfo.setConstruction(datum.getConstructionSite() == 0 ? ConstructionEnum.OTHER.getType() : datum.getConstructionSite()); stationInfo.setPictures(Arrays.asList(datum.getImgUrl().split(","))); stationInfo.setPictures(StringUtils.isNotEmpty(datum.getImgUrl()) ? Arrays.asList(datum.getImgUrl().split(",")) : new ArrayList<>()); stationInfo.setSiteGuide(datum.getGuide()); stationInfo.setMatchCars(datum.getVehicleDescription()); stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime()); @@ -506,7 +484,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryStationStatus queryStationsInfo = JSON.parseObject(decrypt, QueryStationStatus.class); List<Integer> collect = queryStationsInfo.getStationIDs().stream().map(Integer::valueOf).collect(Collectors.toList()); List<Site> data = siteClient.getSiteByIds(collect).getData(); @@ -557,7 +535,7 @@ } result.setStationStatusInfos(StationStatusInfos); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -583,7 +561,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryStationStats queryStationStats = JSON.parseObject(decrypt, QueryStationStats.class); QueryStationStatsResult result = new QueryStationStatsResult(); ChargingPercentProvinceDto dto = new ChargingPercentProvinceDto(); @@ -627,7 +605,7 @@ stationStats.setEquipmentStatsInfos(EquipmentStatsInfos); result.setStationStats(stationStats); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -650,7 +628,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class); String connectorID = queryEquipAuth.getConnectorID(); TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData(); @@ -694,7 +672,7 @@ break; } //参数加密 String jsonString = JSON.toJSONString(queryEquipAuthResult); String jsonString = JacksonUtils.toJson(queryEquipAuthResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -718,7 +696,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryEquipBusinessPolicy queryEquipBusinessPolicy = JSON.parseObject(decrypt, QueryEquipBusinessPolicy.class); //构建返回结果 @@ -733,7 +711,7 @@ baseResult.setRet(4004); baseResult.setMsg("connectorID 参数无效"); //参数加密 String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -750,7 +728,7 @@ queryEquipBusinessPolicyResult.setFailReason(1); queryEquipBusinessPolicyResult.setSumPeriod(0); //参数加密 String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -767,7 +745,7 @@ queryEquipBusinessPolicyResult.setSumPeriod(PolicyInfos.size()); queryEquipBusinessPolicyResult.setPolicyInfos(PolicyInfos); //参数加密 String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -833,7 +811,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryStartCharge queryStartCharge = JSON.parseObject(decrypt, QueryStartCharge.class); //构建返回结果 @@ -850,7 +828,7 @@ result.setFailReason(1); result.setStartChargeSeqStat(5); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -862,7 +840,7 @@ result.setFailReason(2); result.setStartChargeSeqStat(5); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -883,7 +861,7 @@ result.setFailReason(1); result.setStartChargeSeqStat(2); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -893,7 +871,7 @@ result.setSuccStat(0); result.setFailReason(0); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -961,12 +939,12 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryEquipChargeStatus queryEquipChargeStatus = JSON.parseObject(decrypt, QueryEquipChargeStatus.class); //校验token和签名 QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(queryEquipChargeStatus.getStartChargeSeq()); //参数加密 String jsonString = JSON.toJSONString(queryEquipChargeStatusResult); String jsonString = JacksonUtils.toJson(queryEquipChargeStatusResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -1136,7 +1114,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryStopCharge queryStopCharge = JSON.parseObject(decrypt, QueryStopCharge.class); QueryStopChargeResult queryStopChargeResult = new QueryStopChargeResult(); queryStopChargeResult.setStartChargeSeq(queryStopCharge.getStartChargeSeq()); @@ -1150,14 +1128,14 @@ queryStopChargeResult.setSuccStat(1); queryStopChargeResult.setFailReason(3); //参数加密 String jsonString = JSON.toJSONString(queryStopChargeResult); String jsonString = JacksonUtils.toJson(queryStopChargeResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); return baseResult; } //参数加密 String jsonString = JSON.toJSONString(queryStopChargeResult); String jsonString = JacksonUtils.toJson(queryStopChargeResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -1351,7 +1329,7 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryTerminalCode queryTerminalCode = JSON.parseObject(decrypt, QueryTerminalCode.class); String qrCode = queryTerminalCode.getQRCode(); String substring = qrCode.substring(qrCode.indexOf("=") + 1); @@ -1359,7 +1337,7 @@ queryTerminalCodeResult.setTerminalCode(substring); //参数加密 String jsonString = JSON.toJSONString(queryTerminalCodeResult); String jsonString = JacksonUtils.toJson(queryTerminalCodeResult); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); @@ -1400,7 +1378,7 @@ //待处理相关业务逻辑 } //参数加密 String jsonString = JSON.toJSONString(notificationChargeCarnumResult); String jsonString = JacksonUtils.toJson(notificationChargeCarnumResult); String encrypt = AESUtil.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.buildSign(baseResult)); @@ -1425,12 +1403,12 @@ } Operator operator = baseResult.getOperator(); //解密参数 String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); QueryChargeOrderInfo queryChargeOrderInfo = JSON.parseObject(decrypt, QueryChargeOrderInfo.class); //构建返回结果 QueryChargeOrderInfoResult result = buildQueryChargeOrderInfoResult(queryChargeOrderInfo); //参数加密 String jsonString = JSON.toJSONString(result); String jsonString = JacksonUtils.toJson(result); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java
@@ -3,6 +3,7 @@ import cn.hutool.http.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.integration.drainage.kuaidian.model.NotificationStationChangeResult; import com.ruoyi.integration.drainage.kuaidian.model.StationChange; @@ -11,6 +12,7 @@ import com.ruoyi.other.api.domain.Operator; import com.ruoyi.other.api.feignClient.OperatorClient; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import java.time.Instant; import java.time.LocalDateTime; @@ -19,6 +21,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** @@ -29,10 +32,9 @@ @Slf4j public class TCECUtil { // private static OperatorClient operatorClient = SpringUtils.getBean(OperatorClient.class); public static Map<Long, Integer> map = new HashMap<>(); private static OperatorClient operatorClient = SpringUtils.getBean(OperatorClient.class); /** * 获取token @@ -60,7 +62,7 @@ LocalDateTime localDateTime = Instant.ofEpochSecond(tokenAvailableTime).atOffset(ZoneOffset.UTC).toLocalDateTime(); operator.setAccessToken(token); operator.setTokenAvailableTime(localDateTime); // operatorClient.editOperator(operator); operatorClient.editOperator(operator); return token; } @@ -205,33 +207,20 @@ */ public static void buildBody(HttpRequest post, Object o, Operator operator){ Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); Integer integer = map.get(timeStamp); if(null == integer){ integer = 1; }else{ integer++; } map.put(timeStamp, integer); post.contentType("application/json;charset=utf-8"); post.header("Authorization", "Bearer " + getToken(operator)); BaseRequest baseRequest = new BaseRequest(); baseRequest.setOperatorID(operator.getOurOperatorId()); baseRequest.setTimeStamp(timeStamp); baseRequest.setSeq(String.format("%04d", integer)); String jsonString = JSON.toJSONString(o); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseRequest.setSeq("0001"); String jsonString = JacksonUtils.toJson(o); String encrypt = AESUtil.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv()); baseRequest.setData(encrypt); baseRequest.setOperator(operator); baseRequest.setSig(ourBuildSign(baseRequest)); baseRequest.setSig(buildSign(baseRequest)); post.body(JSON.toJSONString(baseRequest)); //清空小于当前时间的map中的无效数据 for (Long k : map.keySet()) { if(k <= (timeStamp - 10)){ map.remove(k); } } } /** * 构建签名字符串 @@ -279,7 +268,7 @@ switch (operator.getName()){ case "XinDianTu": //进行字符串拼接、计算 String m = new StringBuilder(operator.getOurOperatorId()).append(model.getData()).append(model.getTimeStamp()).append(model.getSeq()).toString(); String m = new StringBuilder(model.getOperatorID()).append(model.getData()).append(model.getTimeStamp()).append(model.getSeq()).toString(); byte[] hmacMd5 = SignUtil.getHMacMD5Bytes(key.getBytes(), m.getBytes()); // 打印计算得到的签名Sig sign = SignUtil.bytesToHexString(hmacMd5); @@ -290,6 +279,7 @@ } return sign; } public static void main(String[] args) { ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TokenUtil.java
@@ -69,8 +69,8 @@ * * @return 用户信息 */ public LoginUser getLoginUser() { LoginUser loginUser = getLoginUser(ServletUtils.getRequest()); public Operator getLoginUser() { Operator loginUser = getLoginUser(ServletUtils.getRequest()); if (loginUser == null) { throw new NotLoginException("令牌已过期,请重新登录!"); } @@ -82,7 +82,7 @@ * * @return 用户信息 */ public LoginUser getLoginUser(HttpServletRequest request) { public Operator getLoginUser(HttpServletRequest request) { // 获取请求携带的令牌 String token = SecurityUtils.getToken(request); return getLoginUser(token); @@ -93,8 +93,8 @@ * * @return 用户信息 */ public LoginUser getLoginUser(String token) { LoginUser user = null; public Operator getLoginUser(String token) { Operator user = null; try { if (StringUtils.isNotEmpty(token)) { String userkey = JwtUtils.getUserKey(token); @@ -102,6 +102,7 @@ return user; } } catch (Exception e) { e.printStackTrace(); } return user; } @@ -150,14 +151,7 @@ String userKey = getTokenKey(operator.getToken()); redisService.setCacheObject(userKey, operator, expireTime, TimeUnit.MINUTES); } public void refreshToken1(LoginUserApplet dto) { dto.setLoginTime(System.currentTimeMillis()); dto.setExpireTime(dto.getLoginTime() + expireAppletTime * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(dto.getToken()); redisService.setCacheObject(userKey, dto, expireAppletTime, TimeUnit.MINUTES); } private String getTokenKey(String token) { return ACCESS_TOKEN + token; ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseModel.java
@@ -1,5 +1,7 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.other.api.domain.Operator; import lombok.Data; @@ -15,23 +17,27 @@ * 运营商标识 */ @NotNull @JsonProperty("OperatorID") private String operatorID; /** * 参数内容 */ @NotNull @JsonProperty("Data") private String data; /** * 时间戳 * yyyyMMddHHmmss */ @NotNull @JsonProperty("TimeStamp") private Long timeStamp; /** * 自增序列 * 4位自增序列取自时间戳,同一秒内按序列自增长,新秒重计。如 0001 */ @NotNull @JsonProperty("Seq") private String seq; /** * 运营商对象 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseRequest.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,5 +16,6 @@ * 数字签名 */ @NotNull @JsonProperty("Sig") private String sig; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/BaseResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.other.api.domain.Operator; import lombok.Data; @@ -23,16 +24,19 @@ * 500:系统错误 */ @NotNull @JsonProperty("Ret") private Integer ret; /** * 错误信息描述 */ @NotNull @JsonProperty("Msg") private String msg; /** * 签名 */ @NotNull @JsonProperty("Sig") private String sig; /** ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ChargeDetail.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -18,36 +19,43 @@ * yyyy-MM-dd HH:mm:ss */ @NotNull @JsonProperty("DetailStartTime") private String detailStartTime; /** * 结束时间 * yyyy-MM-dd HH:mm:ss */ @NotNull @JsonProperty("DetailEndTime") private String detailEndTime; /** * 时段电价 */ @Null @JsonProperty("ElecPrice") private BigDecimal elecPrice; /** * 时段服务费价格 */ @Null @JsonProperty("SevicePrice") private BigDecimal sevicePrice; /** * 时段充电量 */ @Null @JsonProperty("DetailPower") private BigDecimal detailPower; /** * 时段电费 */ @Null @JsonProperty("DetailElecMoney") private BigDecimal detailElecMoney; /** * 时段服务费 */ @Null @JsonProperty("DetailSeviceMoney") private BigDecimal detailSeviceMoney; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,41 +18,49 @@ * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 充电设备接口名称 */ @Null @JsonProperty("ConnectorName") private String connectorName; /** * 充电设备接口类型 */ @NotNull @JsonProperty("ConnectorType") private Integer connectorType; /** * 额定电压上限 */ @NotNull @JsonProperty("VoltageUpperLimits") private Integer voltageUpperLimits; /** * 额定电压下限 */ @NotNull @JsonProperty("VoltageLowerLimits") private Integer voltageLowerLimits; /** * 额定电流 */ @NotNull @JsonProperty("Current") private Integer current; /** * 额定功率 */ @NotNull @JsonProperty("Power") private BigDecimal power; /** * 车位号 */ @Null @JsonProperty("ParkNo") private String parkNo; /** * 国家标准 @@ -59,10 +68,12 @@ * 2:2015 */ @NotNull @JsonProperty("NationalStandard") private Integer nationalStandard; /** * 枪二维码 */ @Null @JsonProperty("QRCode") private String QRCode; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatsInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,10 +17,12 @@ * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 充电设备接口累计电量 */ @NotNull @JsonProperty("ConnectorElectricity") private BigDecimal connectorElectricity; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorStatusInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,6 +17,7 @@ * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 充电设备接口状态 @@ -27,6 +29,7 @@ * 255:故障 */ @NotNull @JsonProperty("Status") private Integer status; /** * 车位状态 @@ -35,6 +38,7 @@ * 50:占用 */ @Null @JsonProperty("ParkStatus") private Integer parkStatus; /** * 地锁状态 @@ -43,5 +47,6 @@ * 50:已上锁 */ @Null @JsonProperty("LookStatus") private Integer lookStatus; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -18,56 +19,67 @@ * 设备编号 */ @NotNull @JsonProperty("EquipmentID") private String equipmentID; /** * 设备生产商组织机构代码 */ @Null @JsonProperty("ManufacturerID") private String manufacturerID; /** * 设备生产商名称 */ @Null @JsonProperty("ManufacturerName") private String manufacturerName; /** * 设备型号 */ @Null @JsonProperty("EquipmentModel") private String equipmentModel; /** * 设备生产日期 * YYYY-MM-DD */ @Null @JsonProperty("ProductionDate") private String productionDate; /** * 设备类型 */ @NotNull @JsonProperty("EquipmentType") private Integer equipmentType; /** * 充电设备接口信息列表 */ @NotNull @JsonProperty("ConnectorInfos") private List<ConnectorInfo> connectorInfos; /** * 充电设备经度 */ @Null @JsonProperty("EquipmentLng") private BigDecimal equipmentLng; /** * 充电设备纬度 */ @Null @JsonProperty("EquipmentLat") private BigDecimal equipmentLat; /** * 充电设备总功率 */ @NotNull @JsonProperty("Power") private BigDecimal power; /** * 充电设备名称 */ @Null @JsonProperty("EquipmentName") private String equipmentName; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentStatsInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,15 +18,18 @@ * 设备编码 */ @NotNull @JsonProperty("EquipmentID") private String equipmentID; /** * 充电设备接口累计电量 */ @NotNull @JsonProperty("EquipmentElectricity") private BigDecimal equipmentElectricity; /** * 充电设备接口统计信息列表 */ @NotNull @JsonProperty("ConnectorStatsInfos") private List<ConnectorStatsInfo> connectorStatsInfos; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -18,43 +19,51 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 开始充电时间 * yyyy-MM-dd HH:mm:ss */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 结束充电时间 * yyyy-MM-dd HH:mm:ss */ @NotNull @JsonProperty("EndTime") private String endTime; /** * 累计充电量 */ @NotNull @JsonProperty("TotalPower") private BigDecimal totalPower; /** * 总电费 */ @NotNull @JsonProperty("TotalElecMoney") private BigDecimal totalElecMoney; /** * 总服务费 */ @NotNull @JsonProperty("TotalSeviceMoney") private BigDecimal totalSeviceMoney; /** * 累计总金额 */ @NotNull @JsonProperty("TotalMoney") private BigDecimal totalMoney; /** * 充电结束原因 @@ -66,27 +75,32 @@ * 5·99:自定义 */ @NotNull @JsonProperty("StopReason") private Integer stopReason; /** * 时段数 N * 0·32 */ @Null @JsonProperty("SumPeriod") private Integer sumPeriod; /** * 充电明细信息 */ @Null @JsonProperty("ChargeDetails") private List<ChargeDetail> chargeDetails; /** * 占位费 */ @Null @JsonProperty("TotalDelayMoney") private BigDecimal totalDelayMoney; /** * 车辆识别码 */ @Null @JsonProperty("VIN") private String VIN; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationChargeOrderInfoResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,11 +16,13 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 确认结果 @@ -27,5 +30,6 @@ * 1:争议交易 * 2·99:自定义 */ @JsonProperty("ConfirmResult") private Integer confirmResult; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationEquipChargeStatusResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 操作结果 @@ -22,5 +24,6 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStartCharge.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电订单状态 @@ -25,15 +27,18 @@ * 5:未知 */ @NotNull @JsonProperty("StartChargeSeqStat") private Integer startChargeSeqStat; /** * 充电设别接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 充电启动时间 */ @NotNull @JsonProperty("StartTime") private String startTime; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStartChargeResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 操作结果 @@ -22,6 +24,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -29,5 +32,6 @@ * 1:接收失败 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStationStatusResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,5 +18,6 @@ * 1:丢弃/忽略,不需要重试 */ @NotNull @JsonProperty("Status") private Integer status; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStopCharge.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 操作结果 @@ -22,6 +24,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -29,5 +32,6 @@ * 1:接收失败 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/NotificationStopChargeResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电订单状态 @@ -25,11 +27,13 @@ * 5:未知 */ @NotNull @JsonProperty("StartChargeSeqStat") private Integer startChargeSeqStat; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 操作结果 @@ -37,6 +41,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -47,5 +52,6 @@ * 4`9:自定义 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/OperatorInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,30 +17,36 @@ * 运营商ID */ @NotNull @JsonProperty("OperatorID") private String operatorID; /** * 运营商名称 */ @NotNull @JsonProperty("OperatorName") private String operatorName; /** * 运营商电话1 */ @NotNull @JsonProperty("OperatorTel1") private String operatorTel1; /** * 运营商电话2 */ @Null @JsonProperty("OperatorTel2") private String operatorTel2; /** * 运营商注册地址 */ @Null @JsonProperty("OperatorRegAddress") private String operatorRegAddress; /** * 备注 */ @Null @JsonProperty("OperatorNote") private String operatorNote; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PlaceHolder.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,26 +18,31 @@ * 免费时长 */ @NotNull @JsonProperty("FreeTime") private Integer freeTime; /** * 嘴阀占位费 */ @NotNull @JsonProperty("MaxFee") private BigDecimal maxFee; /** * 生效开始时间 * yyyy-MM-dd HH:mm:ss */ @NotNull @JsonProperty("EffectStartTime") private String effectStartTime; /** * 生效结束时间 */ @NotNull @JsonProperty("EffectEndTime") private String effectEndTime; /** * 占位费价格 */ @NotNull @JsonProperty("PlaceHolderPrices") private List<PlaceHolderPrice> placeHolderPrices; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PlaceHolderPrice.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,16 +18,19 @@ * HH:mm */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 结束时段 * HH:mm */ @NotNull @JsonProperty("EndTime") private String endTime; /** * 单价 */ @NotNull @JsonProperty("Price") private BigDecimal price; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/PolicyInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,15 +18,18 @@ * HHmmss */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 时段电费 */ @NotNull @JsonProperty("ElecPrice") private BigDecimal elecPrice; /** * 时段服务费 */ @NotNull @JsonProperty("SevicePrice") private BigDecimal sevicePrice; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipAuth.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,10 +16,12 @@ * 设备认证流水 */ @NotNull @JsonProperty("EquipAuthSeq") private String equipAuthSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipAuthResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,11 +16,13 @@ * 设备认证流水号 */ @NotNull @JsonProperty("EquipAuthSeq") private String equipAuthSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 操作结果 @@ -27,6 +30,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -36,5 +40,6 @@ * 3·99:自定义 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicy.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,10 +17,12 @@ * 格式”运营商ID+唯一编号“。27字符 */ @NotNull @JsonProperty("EquipBizSeq") private String equipBizSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipBusinessPolicyResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,11 +17,13 @@ * 业务策略查询流水号 */ @NotNull @JsonProperty("EquipBizSeq") private String equipBizSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 操作结果 @@ -28,6 +31,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -35,17 +39,20 @@ * 1:此充电桩业务策略不存在 */ @NotNull @JsonProperty("FailReason") private Integer failReason; /** * 时段数N * 0`32 */ @NotNull @JsonProperty("SumPeriod") private Integer sumPeriod; /** * 计策信息 */ @NotNull @JsonProperty("PolicyInfos") private List<PolicyInfo> policyInfos; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatus.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,15 +17,18 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 抢号 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 车辆识别码 */ @Null @JsonProperty("VIN") private String VIN; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryEquipChargeStatusResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -18,6 +19,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电订单状态 @@ -28,11 +30,13 @@ * 5:未知 */ @NotNull @JsonProperty("StartChargeSeqStat") private Integer startChargeSeqStat; /** * 充电设备接口编号 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 充电设备接口状态 @@ -43,87 +47,104 @@ * 255:故障 */ @NotNull @JsonProperty("ConnectorStatus") private Integer connectorStatus; /** * A相电流 */ @NotNull @JsonProperty("CurrentA") private BigDecimal currentA; /** * B相电流 */ @Null @JsonProperty("CurrentB") private BigDecimal currentB; /** * C相电流 */ @Null @JsonProperty("CurrentC") private BigDecimal currentC; /** * A相电压 */ @NotNull @JsonProperty("VoltageA") private BigDecimal voltageA; /** * B相电压 */ @Null @JsonProperty("VoltageB") private BigDecimal voltageB; /** * C相电压 */ @Null @JsonProperty("VoltageC") private BigDecimal voltageC; /** * 电池剩余电量 */ @NotNull @JsonProperty("Soc") private BigDecimal soc; /** * 开始充电时间 */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 本次采样时间 */ @NotNull @JsonProperty("EndTime") private String endTime; /** * 累计充电量 */ @NotNull @JsonProperty("TotalPower") private BigDecimal totalPower; /** * 累计电费 */ @Null @JsonProperty("ElecMoney") private BigDecimal elecMoney; /** * 累计服务费 */ @Null @JsonProperty("SeviceMoney") private BigDecimal seviceMoney; /** * 累计总金额 */ @Null @JsonProperty("TotalMoney") private BigDecimal totalMoney; /** * 时段数N * 0`32 */ @Null @JsonProperty("SumPeriod") private Integer sumPeriod; /** * 充电明细信息 */ @Null @JsonProperty("ChargeDetails") private List<ChargeDetail> chargeDetails; /** * 车辆识别码 */ @Null @JsonProperty("VIN") private String VIN; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStartCharge.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,25 +18,30 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 二维码其他信息 */ @NotNull @JsonProperty("QRCode") private String QRCode; /** * 充电余额 */ @NotNull @JsonProperty("ChargingAmt") private BigDecimal chargingAmt; /** * 充电车牌号 */ @Null @JsonProperty("PlateNum") private String plateNum; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStartChargeResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,6 +17,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电订单状态 @@ -26,11 +28,13 @@ * 5:未知 */ @NotNull @JsonProperty("StartChargeSeqStat") private Integer startChargeSeqStat; /** * 充电设别接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; /** * 操作结果 @@ -38,6 +42,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -47,5 +52,6 @@ * 3`9:自定义 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStats.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,17 +16,20 @@ * 充电站ID */ @NotNull @JsonProperty("StationID") private String stationID; /** * 统计开始时间 * yyyy-MM-dd */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 统计结束时间 * yyyy-MM-dd */ @NotNull @JsonProperty("EndTime") private String endTime; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatsResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,5 +16,6 @@ * 充电站统计信息 */ @NotNull @JsonProperty("StationStats") private StationStatsInfo stationStats; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatus.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,5 +18,6 @@ * 数组长度不超过50 */ @NotNull @JsonProperty("StationIDs") private List<String> stationIDs; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationStatusResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.util.List; @@ -14,9 +15,11 @@ /** * 结果总数 */ @JsonProperty("Total") private Integer total; /** * 设备接口状态列表 */ @JsonProperty("StationStatusInfos") private List<StationStatusInfo> stationStatusInfos; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.Null; @@ -15,17 +16,20 @@ * yyyy-MM-dd HH:mm:ss */ @Null @JsonProperty("LastQueryTime") private String lastQueryTime; /** * 查询页码 * 默认1 */ @Null @JsonProperty("PageNo") private Integer pageNo; /** * 每页数量 * 默认10 */ @Null @JsonProperty("PageSize") private Integer pageSize; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStationsInfoResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,20 +18,24 @@ * 当前页数 */ @NotNull @JsonProperty("PageNo") private Integer pageNo; /** * 页码总数 */ @NotNull @JsonProperty("PageCount") private Integer pageCount; /** * 总记录条数 */ @NotNull @JsonProperty("ItemSize") private Integer itemSize; /** * 充电站信息列表 */ @NotNull @JsonProperty("StationInfos") private List<StationInfo> stationInfos; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStopCharge.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,10 +16,12 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电设备接口编码 */ @NotNull @JsonProperty("ConnectorID") private String connectorID; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryStopChargeResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 充电订单号 */ @NotNull @JsonProperty("StartChargeSeq") private String startChargeSeq; /** * 充电订单状态 @@ -25,6 +27,7 @@ * 5:未知 */ @NotNull @JsonProperty("StartChargeSeqStat") private Integer startChargeSeqStat; /** * 操作结果 @@ -32,6 +35,7 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 失败原因 @@ -42,6 +46,7 @@ * 4`9:自定义 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryToken.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,10 +16,12 @@ * 运营商标识 */ @NotNull @JsonProperty("OperatorID") private String operatorID; /** * 运营商秘钥 */ @NotNull @JsonProperty("OperatorSecret") private String operatorSecret; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/QueryTokenResult.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -15,6 +16,7 @@ * 运营商标识 */ @NotNull @JsonProperty("OperatorID") private String operatorID; /** * 成功状态 @@ -22,16 +24,19 @@ * 1:失败 */ @NotNull @JsonProperty("SuccStat") private Integer succStat; /** * 获取的凭证 */ @NotNull @JsonProperty("AccessToken") private String accessToken; /** * 凭证有效期,秒 */ @NotNull @JsonProperty("TokenAvailableTime") private Long tokenAvailableTime; /** * 失败原因 @@ -41,5 +46,6 @@ * 3`9自定义 */ @NotNull @JsonProperty("FailReason") private Integer failReason; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -18,147 +19,176 @@ * 充电站ID */ @NotNull @JsonProperty("StationID") private String stationID; /** * 运营商ID */ @NotNull @JsonProperty("OperatorID") private String operatorID; /** * 设备所属方ID * 设备所属运营平台组织机构代码 */ @NotNull @JsonProperty("EquipmentOwnerID") private String equipmentOwnerID; /** * 充电站名称 */ @NotNull @JsonProperty("StationName") private String stationName; /** * 充电站国家代码 */ @NotNull @JsonProperty("CountryCode") private String countryCode; /** * 充电站省市辖区编码 */ @NotNull @JsonProperty("AreaCode") private String areaCode; /** * 详细地址 */ @NotNull @JsonProperty("Address") private String address; /** * 站点电话 */ @Null @JsonProperty("StationTel") private String stationTel; /** * 站点电话 */ @NotNull @JsonProperty("ServiceTel") private String serviceTel; /** * 站点类型 */ @NotNull @JsonProperty("StationType") private Integer stationType; /** * 站点状态 */ @NotNull @JsonProperty("StationStatus") private Integer stationStatus; /** * 车位数量,0:未知 */ @NotNull @JsonProperty("ParkNums") private Integer parkNums; /** * 经度(保留6位小数) */ @NotNull @JsonProperty("StationLng") private BigDecimal stationLng; /** * 纬度(保留6位小数) */ @NotNull @JsonProperty("StationLat") private BigDecimal stationLat; /** * 站点引导 */ @Null @JsonProperty("SiteGuide") private String siteGuide; /** * 建设场所 */ @NotNull @JsonProperty("Construction") private Integer construction; /** * 站点照片 * 字符串数组 */ @Null @JsonProperty("Pictures") private List<String> pictures; /** * 使用车型描述 */ @Null @JsonProperty("MatchCars") private String matchCars; /** * 车位楼层及数量描述 */ @Null @JsonProperty("ParkInfo") private String parkInfo; /** * 营业时间 */ @Null @JsonProperty("BusineHours") private String busineHours; /** * 充电电费率描述 */ @Null @JsonProperty("ElectricityFee") private String electricityFee; /** * 服务费率描述 */ @Null @JsonProperty("ServiceFee") private String serviceFee; /** * 停车费率描述 */ @Null @JsonProperty("ParkFee") private String parkFee; /** * 支付方式:刷卡、线上、现金 */ @Null @JsonProperty("Payment") private String payment; /** * 是否支持预约 */ @Null @JsonProperty("SupportOrder") private Integer supportOrder; /** * 备注 */ @Null @JsonProperty("Remark") private String remark; /** * 充电设备信息列表 */ @NotNull @JsonProperty("EquipmentInfos") private List<EquipmentInfo> equipmentInfos; /** * 占位费描述 */ @Null @JsonProperty("OvertimeFee") private String overtimeFee; /** * 占位费信息 */ @Null @JsonProperty("PlaceHolder") private PlaceHolder placeHolder; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatsInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,27 +18,32 @@ * 充电站ID */ @NotNull @JsonProperty("StationID") private String stationID; /** * 统计的开始时间 * yyyy-MM-dd */ @NotNull @JsonProperty("StartTime") private String startTime; /** * 统计的结束时间 * yyyy-MM-dd */ @NotNull @JsonProperty("EndTime") private String endTime; /** * 充电站累计电量 kw/h */ @NotNull @JsonProperty("StationElectricity") private BigDecimal stationElectricity; /** * 充电设备统计信息列表 */ @NotNull @JsonProperty("EquipmentStatsInfos") private List<EquipmentStatsInfo> equipmentStatsInfos; } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationStatusInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -16,9 +17,11 @@ * 充电站ID */ @NotNull @JsonProperty("StationID") private String stationID; /** * 充电设备接口状态列表 */ @JsonProperty("ConnectorStatusInfos") private List<ConnectorStatusInfo> connectorStatusInfos; }