| | |
| | | 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.chargingPile.api.vo.GetParkingRecord; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | |
| | | 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 java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.concurrent.LinkedBlockingQueue; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.concurrent.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2025/1/21 17:52 |
| | | */ |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping("/evcs/v1.0") |
| | | public class TCECController { |
| | |
| | | |
| | | @Resource |
| | | private TokenUtil tokenUtil; |
| | | |
| | | private static Map<Long, Integer> map = new HashMap<>(); |
| | | |
| | | |
| | | @Resource |
| | | private ParkingLotClient parkingLotClient; |
| | | |
| | |
| | | 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中的无效数据 |
| | | for (Long k : map.keySet()) { |
| | | if(k <= (mapKey - 10)){ |
| | | map.remove(k); |
| | | } |
| | | } |
| | | |
| | | baseResult.setSeq("0001"); |
| | | //校验token和签名 |
| | | String operatorID = baseRequest.getOperatorID(); |
| | | String sig = baseRequest.getSig(); |
| | |
| | | } |
| | | //校验token |
| | | if(tokenCheck){ |
| | | LoginUser loginUser = tokenUtil.getLoginUser(request); |
| | | Operator loginUser = tokenUtil.getLoginUser(request); |
| | | if(null == loginUser){ |
| | | baseResult.setRet(4002); |
| | | baseResult.setMsg("身份校验失败,无效的token"); |
| | |
| | | } |
| | | |
| | | Operator operator = r.getData(); |
| | | 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("签名校验失败"); |
| | | return baseResult; |
| | | } |
| | | baseResult.setOperator(operator); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_token") |
| | | public BaseResult queryToken(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台获取token请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | BaseResult baseResult = requestCheck(false, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台获取token响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | QueryTokenResult queryTokenResult = new QueryTokenResult(); |
| | |
| | | queryTokenResult.setSuccStat(1); |
| | | queryTokenResult.setFailReason(1); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryTokenResult); |
| | | String jsonString = JacksonUtils.toJson(queryTokenResult); |
| | | log.info("三方平台获取token响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台获取token请求Data:" + decrypt); |
| | | 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); |
| | | log.info("三方平台获取token响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | 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); |
| | | log.info("三方平台获取token响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_stations_info") |
| | | public BaseResult queryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台查询充电站信息响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台查询充电站信息请求Data:" + decrypt); |
| | | QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); |
| | | Integer pageNo = queryStationsInfo.getPageNo(); |
| | | Integer pageSize = queryStationsInfo.getPageSize(); |
| | |
| | | queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); |
| | | queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryStationsInfoResult); |
| | | String jsonString = JacksonUtils.toJson(queryStationsInfoResult); |
| | | log.info("三方平台查询充电站信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | 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.setCountryCode(StringUtils.isNotEmpty(datum.getCountryCode()) ? datum.getCountryCode() : "CN"); |
| | | stationInfo.setAreaCode(datum.getDistrictsCode()); |
| | | stationInfo.setAddress(datum.getAddress()); |
| | | stationInfo.setStationTel(datum.getPhone()); |
| | |
| | | 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()); |
| | |
| | | |
| | | //构建设备接口信息 |
| | | equipmentInfo.setConnectorInfos(buildConnectorInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList)); |
| | | equipmentInfo.setPower(tChargingPile.getRatedPower()); |
| | | equipmentInfos.add(equipmentInfo); |
| | | } |
| | | return equipmentInfos; |
| | |
| | | connectorStatusInfo.setStatus(255); |
| | | break; |
| | | } |
| | | ConnectorStatusInfo connectorStatusInfo1 = new ConnectorStatusInfo(); |
| | | BeanUtils.copyProperties(connectorStatusInfo, connectorStatusInfo1); |
| | | connectorStatusInfo.setConnectorStatusInfo(connectorStatusInfo1); |
| | | List<Operator> operators = operatorClient.getAllOperator().getData(); |
| | | for (Operator operator : operators) { |
| | | TCECUtil.notificationStationStatus(operator, connectorStatusInfo); |
| | |
| | | */ |
| | | @PostMapping("/query_station_status") |
| | | public BaseResult queryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台获取设备接口状态请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台获取设备接口状态响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取设备接口状态响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台获取设备接口状态请求Data:" + decrypt); |
| | | 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(); |
| | |
| | | } |
| | | result.setStationStatusInfos(StationStatusInfos); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台获取设备接口状态响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取设备接口状态响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_station_stats") |
| | | public BaseResult queryStationStats(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台获取统计信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台获取统计信息响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取统计信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台获取统计信息请求Data:" + decrypt); |
| | | QueryStationStats queryStationStats = JSON.parseObject(decrypt, QueryStationStats.class); |
| | | QueryStationStatsResult result = new QueryStationStatsResult(); |
| | | ChargingPercentProvinceDto dto = new ChargingPercentProvinceDto(); |
| | |
| | | stationStats.setEquipmentStatsInfos(EquipmentStatsInfos); |
| | | result.setStationStats(stationStats); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台获取统计信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台获取统计信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_equip_auth") |
| | | public BaseResult queryEquipAuth(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台设备认证请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台设备认证响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台设备认证响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台设备认证请求Data:" + decrypt); |
| | | QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class); |
| | | String connectorID = queryEquipAuth.getConnectorID(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData(); |
| | | if(null == tChargingGun){ |
| | | baseResult.setRet(4004); |
| | | baseResult.setMsg("connectorID 参数无效"); |
| | | log.info("三方平台设备认证响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | QueryEquipAuthResult queryEquipAuthResult = new QueryEquipAuthResult(); |
| | |
| | | break; |
| | | } |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryEquipAuthResult); |
| | | String jsonString = JacksonUtils.toJson(queryEquipAuthResult); |
| | | log.info("三方平台设备认证响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台设备认证响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_equip_business_policy") |
| | | public BaseResult queryEquipBusinessPolicy(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台查询业务策略信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台查询业务策略信息响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询业务策略信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台查询业务策略信息请求Data:" + decrypt); |
| | | QueryEquipBusinessPolicy queryEquipBusinessPolicy = JSON.parseObject(decrypt, QueryEquipBusinessPolicy.class); |
| | | |
| | | //构建返回结果 |
| | |
| | | baseResult.setRet(4004); |
| | | baseResult.setMsg("connectorID 参数无效"); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); |
| | | String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); |
| | | log.info("三方平台查询业务策略信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询业务策略信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Integer accountingStrategyId = tChargingGun.getAccountingStrategyId(); |
| | |
| | | queryEquipBusinessPolicyResult.setFailReason(1); |
| | | queryEquipBusinessPolicyResult.setSumPeriod(0); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); |
| | | String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); |
| | | log.info("三方平台查询业务策略信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询业务策略信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | List<PolicyInfo> PolicyInfos = new ArrayList<>(); |
| | |
| | | queryEquipBusinessPolicyResult.setSumPeriod(PolicyInfos.size()); |
| | | queryEquipBusinessPolicyResult.setPolicyInfos(PolicyInfos); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryEquipBusinessPolicyResult); |
| | | String jsonString = JacksonUtils.toJson(queryEquipBusinessPolicyResult); |
| | | log.info("三方平台查询业务策略信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询业务策略信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_start_charge") |
| | | public BaseResult queryStartCharge(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台请求开始充电请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台请求开始充电响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台请求开始充电请求Data:" + decrypt); |
| | | QueryStartCharge queryStartCharge = JSON.parseObject(decrypt, QueryStartCharge.class); |
| | | |
| | | //构建返回结果 |
| | |
| | | result.setFailReason(1); |
| | | result.setStartChargeSeqStat(5); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台请求开始充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | //设备离线 |
| | |
| | | result.setFailReason(2); |
| | | result.setStartChargeSeqStat(5); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台请求开始充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | //调用充电接口 |
| | |
| | | addTripartitePlatformOrder.setStartChargeSeq(queryStartCharge.getStartChargeSeq()); |
| | | addTripartitePlatformOrder.setChargingGunId(tChargingGun.getId()); |
| | | addTripartitePlatformOrder.setOperatorId(operator.getOperatorId()); |
| | | addTripartitePlatformOrder.setPaymentAmount(queryStartCharge.getChargingAmt()); |
| | | addTripartitePlatformOrder.setPaymentAmount(null == queryStartCharge.getChargingAmt() ? new BigDecimal(9999) : queryStartCharge.getChargingAmt()); |
| | | addTripartitePlatformOrder.setRechargePaymentType(0); |
| | | addTripartitePlatformOrder.setPlateNum(queryStartCharge.getPlateNum()); |
| | | R order = chargingOrderClient.addTripartitePlatformOrder(addTripartitePlatformOrder); |
| | |
| | | result.setFailReason(1); |
| | | result.setStartChargeSeqStat(2); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台请求开始充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | result.setStartChargeSeqStat(1); |
| | | result.setSuccStat(0); |
| | | result.setFailReason(0); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台请求开始充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //定义定时任务推送订单状态 |
| | | ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); |
| | | Runnable task = new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(result.getStartChargeSeq()).getData(); |
| | | if(null == chargingOrder || chargingOrder.getStatus() != 3){ |
| | | scheduler.shutdown(); |
| | | return; |
| | | } |
| | | notificationEquipChargeStatus(result.getStartChargeSeq(), operator.getId()); |
| | | } |
| | | }; |
| | | //一分钟执行一次 |
| | | scheduler.scheduleAtFixedRate(task, 1, 1, TimeUnit.MINUTES); |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/query_equip_charge_status") |
| | | public BaseResult queryEquipChargeStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台查询充电状态请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台查询充电状态响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询充电状态响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台查询充电状态请求Data:" + decrypt); |
| | | QueryEquipChargeStatus queryEquipChargeStatus = JSON.parseObject(decrypt, QueryEquipChargeStatus.class); |
| | | //校验token和签名 |
| | | QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(queryEquipChargeStatus.getStartChargeSeq()); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryEquipChargeStatusResult); |
| | | String jsonString = JacksonUtils.toJson(queryEquipChargeStatusResult); |
| | | log.info("三方平台查询充电状态响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台查询充电状态响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | queryEquipChargeStatusResult.setVoltageA(chargingOrder.getVoltage()); |
| | | queryEquipChargeStatusResult.setSoc(chargingOrder.getTotalElectricity()); |
| | | queryEquipChargeStatusResult.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | queryEquipChargeStatusResult.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | queryEquipChargeStatusResult.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | queryEquipChargeStatusResult.setTotalPower(chargingOrder.getElectricity()); |
| | | queryEquipChargeStatusResult.setElecMoney(chargingOrder.getTotalElectricity()); |
| | | queryEquipChargeStatusResult.setSeviceMoney(chargingOrder.getServiceCharge()); |
| | |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | |
| | | LocalDateTime startTime = chargingOrder.getStartTime(); |
| | | LocalDateTime endTime = chargingOrder.getEndTime(); |
| | | LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime(); |
| | | String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | for (TChargingOrderAccountingStrategy datum : data) { |
| | |
| | | * @return |
| | | */ |
| | | @PostMapping("/notificationEquipChargeStatus") |
| | | public R notificationEquipChargeStatus(@RequestParam("startChargeSeq") String startChargeSeq, @RequestParam("operatorId") Integer operatorId){ |
| | | public R notificationEquipChargeStatus(@RequestParam(value = "startChargeSeq") String startChargeSeq, @RequestParam(value = "operatorId") Integer operatorId){ |
| | | QueryEquipChargeStatusResult queryEquipChargeStatusResult = buildQueryEquipChargeStatusResult(startChargeSeq); |
| | | Operator operator = operatorClient.getOperatorById(operatorId).getData(); |
| | | NotificationEquipChargeStatusResult notificationEquipChargeStatusResult = TCECUtil.notificationEquipChargeStatus(operator, queryEquipChargeStatusResult); |
| | |
| | | */ |
| | | @PostMapping("/query_stop_charge") |
| | | public BaseResult queryStopCharge(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台请求停止充电请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台请求停止充电响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求停止充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台请求停止充电请求Data:" + decrypt); |
| | | QueryStopCharge queryStopCharge = JSON.parseObject(decrypt, QueryStopCharge.class); |
| | | QueryStopChargeResult queryStopChargeResult = new QueryStopChargeResult(); |
| | | queryStopChargeResult.setStartChargeSeq(queryStopCharge.getStartChargeSeq()); |
| | |
| | | queryStopChargeResult.setSuccStat(1); |
| | | queryStopChargeResult.setFailReason(3); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryStopChargeResult); |
| | | String jsonString = JacksonUtils.toJson(queryStopChargeResult); |
| | | log.info("三方平台请求停止充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求停止充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryStopChargeResult); |
| | | String jsonString = JacksonUtils.toJson(queryStopChargeResult); |
| | | log.info("三方平台请求停止充电响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求停止充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | } |
| | | notificationChargeOrderInfo.setConnectorID(chargingOrder.getChargingGunId().toString()); |
| | | notificationChargeOrderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | notificationChargeOrderInfo.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | notificationChargeOrderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | notificationChargeOrderInfo.setTotalPower(chargingOrder.getElectricity()); |
| | | notificationChargeOrderInfo.setTotalElecMoney(chargingOrder.getTotalElectricity()); |
| | | notificationChargeOrderInfo.setTotalSeviceMoney(chargingOrder.getServiceCharge()); |
| | |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | |
| | | LocalDateTime startTime = chargingOrder.getStartTime(); |
| | | LocalDateTime endTime = chargingOrder.getEndTime(); |
| | | LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime(); |
| | | String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | for (TChargingOrderAccountingStrategy datum : data) { |
| | |
| | | |
| | | |
| | | /** |
| | | * 二维码查询抢号(快电) |
| | | * 二维码查询枪号(快电) |
| | | * @param baseRequest |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/query_terminal_code") |
| | | public BaseResult queryTerminalCode(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台二维码查询枪号请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台二维码查询枪号响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台二维码查询枪号响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台二维码查询枪号请求Data:" + decrypt); |
| | | QueryTerminalCode queryTerminalCode = JSON.parseObject(decrypt, QueryTerminalCode.class); |
| | | String qrCode = queryTerminalCode.getQRCode(); |
| | | String substring = qrCode.substring(qrCode.indexOf("=") + 1); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunByFullNumber(substring).getData(); |
| | | QueryTerminalCodeResult queryTerminalCodeResult = new QueryTerminalCodeResult(); |
| | | queryTerminalCodeResult.setTerminalCode(substring); |
| | | if(null != chargingGun){ |
| | | queryTerminalCodeResult.setTerminalCode(chargingGun.getId().toString()); |
| | | } |
| | | |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(queryTerminalCodeResult); |
| | | String jsonString = JacksonUtils.toJson(queryTerminalCodeResult); |
| | | log.info("三方平台二维码查询枪号响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台二维码查询枪号响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | //待处理相关业务逻辑 |
| | | } |
| | | //参数加密 |
| | | 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)); |
| | |
| | | */ |
| | | @PostMapping("/query_charge_order_info") |
| | | public BaseResult queryChargeOrderInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台账单拉取请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台账单拉取响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台账单拉取响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台账单拉取请求Data:" + decrypt); |
| | | QueryChargeOrderInfo queryChargeOrderInfo = JSON.parseObject(decrypt, QueryChargeOrderInfo.class); |
| | | //构建返回结果 |
| | | QueryChargeOrderInfoResult result = buildQueryChargeOrderInfoResult(queryChargeOrderInfo); |
| | | //参数加密 |
| | | String jsonString = JSON.toJSONString(result); |
| | | String jsonString = JacksonUtils.toJson(result); |
| | | log.info("三方平台账单拉取响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台账单拉取响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | orderInfo.setStartChargeSeq(chargingOrder.getStartChargeSeq()); |
| | | orderInfo.setConnectorID(chargingOrder.getChargingGunId().toString()); |
| | | orderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | orderInfo.setEndTime((null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | orderInfo.setEndTime((null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | orderInfo.setTotalPower(chargingOrder.getTotalElectricity()); |
| | | orderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); |
| | | orderInfo.setTotalSeviceMoney(chargingOrder.getServiceCharge()); |
| | |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | |
| | | LocalDateTime startTime = chargingOrder.getStartTime(); |
| | | LocalDateTime endTime = chargingOrder.getEndTime(); |
| | | LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime(); |
| | | String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | for (TChargingOrderAccountingStrategy datum : data) { |