File was renamed from ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController1.java |
| | |
| | | package com.ruoyi.integration.drainage; |
| | | package com.ruoyi.integration.drainage.util; |
| | | |
| | | import cn.hutool.http.HttpRequest; |
| | | import cn.hutool.http.HttpResponse; |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | 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; |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.HttpUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; |
| | | import com.ruoyi.integration.api.vo.StartChargeResult; |
| | | import com.ruoyi.integration.drainage.AESUtil; |
| | | import com.ruoyi.integration.drainage.TCECSuperviseUtil; |
| | | import com.ruoyi.integration.drainage.TCECUtil; |
| | | import com.ruoyi.integration.drainage.TokenUtil; |
| | | import com.ruoyi.integration.drainage.kuaidian.TCECKDUtil; |
| | | import com.ruoyi.integration.drainage.kuaidian.model.*; |
| | | import com.ruoyi.integration.drainage.model.*; |
| | | import com.ruoyi.integration.drainage.model.enu.*; |
| | | import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; |
| | | import com.ruoyi.order.api.dto.ChargingStatisticeDTO; |
| | | import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; |
| | | import com.ruoyi.order.api.feignClient.ChargingOrderClient; |
| | | import com.ruoyi.order.api.model.AddTripartitePlatformOrder; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.concurrent.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | */ |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping("/evcs/v1.0") |
| | | public class TCECController1 { |
| | | @RequestMapping("/evcs/v2.0") |
| | | public class TCECCJianGuanontroller { |
| | | |
| | | @Resource |
| | | private SiteClient siteClient; |
| | | @Autowired |
| | | private TCECSuperviseUtil tcecSuperviseUtil; |
| | | |
| | | @Resource |
| | | private ChargingPileClient chargingPileClient; |
| | | |
| | |
| | | |
| | | @Resource |
| | | private SystemConfigurationClient systemConfigurationClient; |
| | | // 监管平台密钥 向量 地址 |
| | | private static String ourDataSecret = ""; |
| | | private static String ourDataSecretIv = ""; |
| | | private static String url = "https://dev-gov-hlht-sc.unievbj.com/evcs/v1.0.0/";// 测试 |
| | | // private static String url = "https://hlht-dipper-sc.unievbj.com/evcs/v1.0.0/";// 正式 |
| | | private static String operatorSecret = "f1331ef0b37c2d1b";// 测试 |
| | | // private static String operatorSecret = "a762796b2a8989b8";// 正式 |
| | | |
| | | |
| | | @Autowired |
| | | private TCECSuperviseUtil tcecSuperviseUtil; |
| | | private final static String operatorId = "906171535"; |
| | | |
| | | /** |
| | | * 请求校验 |
| | |
| | | Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); |
| | | baseResult.setTimeStamp(mapKey); |
| | | baseResult.setSeq("0001"); |
| | | |
| | | //校验token和签名 |
| | | String operatorID = baseRequest.getOperatorID(); |
| | | String sig = baseRequest.getSig(); |
| | | Long timeStamp = baseRequest.getTimeStamp(); |
| | | String data = baseRequest.getData(); |
| | | String seq = baseRequest.getSeq(); |
| | | |
| | | if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ |
| | | baseResult.setRet(4003); |
| | | baseResult.setMsg("参数异常"); |
| | | return baseResult; |
| | | } |
| | | |
| | | |
| | | R<Operator> r = operatorClient.getOperator(operatorID); |
| | | |
| | | if(200 != r.getCode()){ |
| | | baseResult.setRet(500); |
| | | baseResult.setMsg("系统异常"); |
| | |
| | | } |
| | | return baseResult; |
| | | } |
| | | public BaseResult requestCheckJianGuan(Boolean tokenCheck, BaseRequest baseRequest, HttpServletRequest request){ |
| | | Operator operator = new Operator(); |
| | | BaseResult baseResult = new BaseResult(); |
| | | baseResult.setRet(0); |
| | | baseResult.setMsg("成功"); |
| | | baseResult.setOperatorID(baseRequest.getOperatorID()); |
| | | operator.setOperatorId(baseRequest.getOperatorID()); |
| | | Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); |
| | | baseResult.setTimeStamp(mapKey); |
| | | baseResult.setSeq("0001"); |
| | | //校验token和签名 |
| | | String operatorID = baseRequest.getOperatorID(); |
| | | String sig = baseRequest.getSig(); |
| | | Long timeStamp = baseRequest.getTimeStamp(); |
| | | String data = baseRequest.getData(); |
| | | String seq = baseRequest.getSeq(); |
| | | baseResult.setOperator(operator); |
| | | if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ |
| | | baseResult.setRet(4003); |
| | | baseResult.setMsg("参数异常"); |
| | | return baseResult; |
| | | } |
| | | return baseResult; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取token |
| | | * @return |
| | |
| | | @PostMapping("/query_token") |
| | | public BaseResult queryToken(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台获取token请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | BaseResult baseResult = requestCheck(false, baseRequest, request); |
| | | BaseResult baseResult = requestCheckJianGuan(false, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台获取token响应Data:"); |
| | | baseResult.setData(""); |
| | |
| | | return baseResult; |
| | | } |
| | | QueryTokenResult queryTokenResult = new QueryTokenResult(); |
| | | Operator operator = baseResult.getOperator(); |
| | | if(null == operator){ |
| | | queryTokenResult.setSuccStat(1); |
| | | queryTokenResult.setFailReason(1); |
| | | //参数加密 |
| | | 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.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | log.info("三方平台获取token请求Data:" + decrypt); |
| | | QueryToken queryToken = JSON.parseObject(decrypt, QueryToken.class); |
| | | if(!queryToken.getOperatorSecret().equals(operator.getOurOperatorSecret())){ |
| | | queryTokenResult.setSuccStat(1); |
| | | queryTokenResult.setFailReason(2); |
| | | //参数加密 |
| | | 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; |
| | | } |
| | | |
| | | //生成token |
| | | Operator operator = baseResult.getOperator(); |
| | | 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()); |
| | |
| | | //参数加密 |
| | | 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)); |
| | | // String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | // baseResult.setData(encrypt); |
| | | String timeStamp = System.currentTimeMillis() + ""; |
| | | SequenceGenerator generator = new SequenceGenerator(); |
| | | String nextSequence = generator.getNextSequence(); |
| | | String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,jsonString); |
| | | String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); |
| | | baseResult.setData(data); |
| | | baseResult.setSig(hmacMD5); |
| | | log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | |
| | | public BaseResult queryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("三方平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | BaseResult baseResult = requestCheckJianGuan(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("三方平台查询充电站信息响应Data:"); |
| | | baseResult.setData(""); |
| | |
| | | List<StationInfo> StationInfos = new ArrayList<>(); |
| | | for (Site datum : sites) { |
| | | StationInfo stationInfo = new StationInfo(); |
| | | stationInfo.setAreaCodeCountryside(datum.getAreaCodeCountryside()); |
| | | stationInfo.setStationUniqueNumber(datum.getCode()); |
| | | stationInfo.setAreaCodeCountryside(datum.getCountryCode()); |
| | | stationInfo.setStationClassification(datum.getStationClassification()); |
| | | stationInfo.setGeneralApplicationType(datum.getGeneralApplicationType()); |
| | | if (org.springframework.util.StringUtils.hasLength(datum.getSwapMatchCars())){ |
| | | stationInfo.setSwapMatchCars(Arrays.asList(datum.getSwapMatchCars().split(","))); |
| | | } |
| | | stationInfo.setSiteGuide(datum.getGuide()); |
| | | stationInfo.setBusineHours(datum.getStartServiceTime()); |
| | | stationInfo.setRoundTheClock(datum.getRoundTheClock()); |
| | | stationInfo.setParkType(datum.getParkType()); |
| | |
| | | EquipmentInfo equipmentInfo = new EquipmentInfo(); |
| | | equipmentInfo.setEquipmentID(tChargingPile.getId().toString()); |
| | | equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode()); |
| | | equipmentInfo.setEquipmentName(tChargingPile.getName()); |
| | | equipmentInfo.setManufacturerName(tChargingPile.getManufacturer()); |
| | | equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType()); |
| | | equipmentInfo.setEquipmentUniqueNumber(tChargingPile.getEquipmentUniqueNumber()); |
| | |
| | | */ |
| | | @PostMapping("/supervise_query_operator_info") |
| | | public BaseResult superviseQueryOperatorInfo(@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.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); |
| | | log.info("监管平台查询充电站信息请求Data:" + decrypt); |
| | | SuperviseQueryOperatorInfo superviseQueryOperatorInfo = JSON.parseObject(decrypt, SuperviseQueryOperatorInfo.class); |
| | | Integer pageNo = superviseQueryOperatorInfo.getPageNo(); |
| | |
| | | // 将superviseQueryOperatorInfoResults转化为json数组 |
| | | superviseQueryOperatorInfoResultPage.setOperatorInfos(superviseQueryOperatorInfoResults); |
| | | String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResultPage); |
| | | //参数加密 |
| | | 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)); |
| | | String timeStamp = System.currentTimeMillis() + ""; |
| | | SequenceGenerator generator = new SequenceGenerator(); |
| | | String nextSequence = generator.getNextSequence(); |
| | | String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(superviseQueryOperatorInfoResultPage)); |
| | | String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); |
| | | BaseResult baseResult = new BaseResult(); |
| | | baseResult.setData(data); |
| | | baseResult.setSig(hmacMD5); |
| | | baseResult.setRet(0); |
| | | baseResult.setMsg("OK"); |
| | | baseResult.setOperatorID(OperatorID); |
| | | return baseResult; |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("/supervise_query_stations_info") |
| | | public BaseResult superviseQueryStationsInfo(@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(), OurDataSecret, OurDataSecretIV); |
| | | log.info("监管平台supervise_query_stations_infoData:" + decrypt); |
| | | //解密参数 |
| | | 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(); |
| | |
| | | if(null == pageSize){ |
| | | pageSize = 50; |
| | | } |
| | | if(stationIDs==null){ |
| | | stationIDs = new ArrayList<String>(); |
| | | } |
| | | PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); |
| | | List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); |
| | | QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult(); |
| | |
| | | queryStationsInfoResult.setPageCount((0 == (siteListPaging.getTotal() % pageSize) ? 0 : 1) + Double.valueOf(siteListPaging.getTotal() / pageSize).intValue()); |
| | | queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); |
| | | queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); |
| | | //参数加密 |
| | | 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)); |
| | | for (StationInfo stationInfo : queryStationsInfoResult.getStationInfos()) { |
| | | stationInfo.setStationClassification(stationInfo.getStationClassification()==null?1:stationInfo.getStationClassification()); |
| | | stationInfo.setGeneralApplicationType(stationInfo.getGeneralApplicationType()==null?1:stationInfo.getGeneralApplicationType()); |
| | | stationInfo.setSiteGuide(org.springframework.util.StringUtils.hasLength(stationInfo.getSiteGuide()) ?stationInfo.getSiteGuide():"站点引导"); |
| | | if (stationInfo.getConstruction()!=null){ |
| | | stationInfo.setConstruction(stationInfo.getConstruction() == 0 ? ConstructionEnum.OTHER.getType() : stationInfo.getConstruction()); |
| | | }else{ |
| | | stationInfo.setConstruction(255); |
| | | } |
| | | stationInfo.setRoundTheClock(stationInfo.getRoundTheClock()==null?1:stationInfo.getRoundTheClock()); |
| | | stationInfo.setParkType(stationInfo.getParkType()==null?1:stationInfo.getParkType()); |
| | | stationInfo.setElectricityFee("{\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\"}"); |
| | | stationInfo.setServiceFee("{"+"\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\""+"}"); |
| | | stationInfo.setElectricityType(stationInfo.getElectricityType()==null?1:stationInfo.getElectricityType()); |
| | | stationInfo.setBusinessExpandType(stationInfo.getBusinessExpandType()==null?1:stationInfo.getBusinessExpandType()); |
| | | stationInfo.setCapacity(stationInfo.getCapacity()==null?new BigDecimal("1.0000"):stationInfo.getCapacity()); |
| | | stationInfo.setRatedPower(stationInfo.getCapacity()==null?new BigDecimal("40.0000"):stationInfo.getCapacity()); |
| | | stationInfo.setPeriodFee(1); |
| | | stationInfo.setOfficialRunTime(org.springframework.util.StringUtils.hasLength(stationInfo.getOfficialRunTime())?stationInfo.getOfficialRunTime():"2025-01-01"); |
| | | stationInfo.setVideoMonitor(stationInfo.getVideoMonitor()==null?1:stationInfo.getVideoMonitor()); |
| | | int i = 0; |
| | | for (EquipmentInfo equipmentInfo : stationInfo.getEquipmentInfos()) { |
| | | i++; |
| | | equipmentInfo.setManufacturerID("906171534"); |
| | | equipmentInfo.setEquipmentUniqueNumber(org.springframework.util.StringUtils.hasLength(equipmentInfo.getEquipmentUniqueNumber())?equipmentInfo.getEquipmentUniqueNumber():"OIX123"+i); |
| | | equipmentInfo.setManufacturerName(org.springframework.util.StringUtils.hasLength(equipmentInfo.getManufacturerName())?equipmentInfo.getManufacturerName():"生产商"); |
| | | equipmentInfo.setEquipmentModel(org.springframework.util.StringUtils.hasLength(equipmentInfo.getEquipmentModel())?equipmentInfo.getEquipmentModel():"DEVICE"+i); |
| | | equipmentInfo.setProductionDate(org.springframework.util.StringUtils.hasLength(equipmentInfo.getProductionDate())?equipmentInfo.getProductionDate():"2024-01-01"); |
| | | equipmentInfo.setEquipmentType(equipmentInfo.getEquipmentType()==null?1:equipmentInfo.getEquipmentType()); |
| | | for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) { |
| | | connectorInfo.setEquipmentClassification(connectorInfo.getEquipmentClassification()==null?1:connectorInfo.getEquipmentClassification()); |
| | | connectorInfo.setVoltageUpperLimits(connectorInfo.getConstantVoltageUpperLimits()==null?new BigDecimal("1.0000"):connectorInfo.getConstantVoltageUpperLimits()); |
| | | connectorInfo.setVoltageLowerLimits(connectorInfo.getConstantVoltageLowerLimits()==null?new BigDecimal("1.0000"):connectorInfo.getConstantVoltageLowerLimits()); |
| | | connectorInfo.setCurrent(connectorInfo.getCurrent()==null?1:connectorInfo.getCurrent()); |
| | | connectorInfo.setPower(connectorInfo.getPower()==null?new BigDecimal("1.0000"):connectorInfo.getPower()); |
| | | connectorInfo.setNationalStandard(connectorInfo.getNationalStandard()==null?1:connectorInfo.getNationalStandard()); |
| | | connectorInfo.setAuxPower(connectorInfo.getAuxPower()==null?1:connectorInfo.getAuxPower()); |
| | | connectorInfo.setOpreateStatus(connectorInfo.getOpreateStatus()==null?50:connectorInfo.getOpreateStatus()); |
| | | } |
| | | equipmentInfo.setPower(equipmentInfo.getPower()==null?new BigDecimal("1.0000"):equipmentInfo.getPower()); |
| | | equipmentInfo.setEquipmentClassification(equipmentInfo.getEquipmentClassification()==null?1:equipmentInfo.getEquipmentClassification()); |
| | | |
| | | } |
| | | stationInfo.setEquipmentOwnerName("明星新能源"); |
| | | stationInfo.setResidentNo("A1234"); |
| | | stationInfo.setSupplyType(stationInfo.getSupplyType()==null?1:stationInfo.getSupplyType()); |
| | | stationInfo.setWattHourMeterNo(org.springframework.util.StringUtils.hasLength(stationInfo.getWattHourMeterNo())?stationInfo.getWattHourMeterNo():UUID.randomUUID().toString().replaceAll("-", "")); |
| | | stationInfo.setForwardPower(stationInfo.getForwardPower()==null?"1.3654":stationInfo.getForwardPower()); |
| | | String uuid = UUID.randomUUID().toString(); |
| | | String randomString = uuid.replaceAll("-", ""); // 去除'-' |
| | | stationInfo.setRecordUniqueNo(randomString); |
| | | |
| | | } |
| | | String timeStamp = System.currentTimeMillis() + ""; |
| | | SequenceGenerator generator = new SequenceGenerator(); |
| | | String nextSequence = generator.getNextSequence(); |
| | | String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationsInfoResult)); |
| | | String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); |
| | | BaseResult baseResult = new BaseResult(); |
| | | baseResult.setData(data); |
| | | baseResult.setSig(hmacMD5); |
| | | baseResult.setRet(0); |
| | | baseResult.setMsg("OK"); |
| | | baseResult.setOperatorID("906171535"); |
| | | return baseResult; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询充换电站状态信息 |
| | | * @param baseRequest |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/supervise_query_station_status") |
| | | public BaseResult superviseQueryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("监管平台查询充换电站状态信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); |
| | | log.info("监管平台supervise_query_station_statusData:" + decrypt); |
| | | //解密参数 |
| | | log.info("监管平台查询充换电站状态信息请求Data:" + decrypt); |
| | | QueryStationStatus queryStationStatus = JSON.parseObject(decrypt, QueryStationStatus.class); |
| | | List<String> stationIDs = queryStationStatus.getStationIDs(); |
| | | String operatorID = queryStationStatus.getOperatorID(); |
| | | |
| | | List<Integer> stationIDList = new ArrayList<>(); |
| | | for (String stationID : stationIDs) { |
| | | stationIDList.add(Integer.valueOf(stationID)); |
| | | } |
| | | |
| | | QueryStationStatusResult queryStationStatusResult = new QueryStationStatusResult(); |
| | | List<StationStatusInfo> stationStatusInfos = new ArrayList<>(); |
| | | |
| | | // 查询站点下的桩信息状态 |
| | | List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(stationIDList).getData(); |
| | | if(!CollectionUtils.isEmpty(chargingPiles)){ |
| | | List<Integer> pileIds = chargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); |
| | | List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(pileIds).getData(); |
| | | if(!CollectionUtils.isEmpty(chargingGuns)){ |
| | | for (Integer stationID : stationIDList) { |
| | | StationStatusInfo stationStatusInfo = new StationStatusInfo(); |
| | | stationStatusInfo.setOperatorID(operatorID); |
| | | stationStatusInfo.setEquipmentOwnerID(operatorId); |
| | | stationStatusInfo.setStationID(String.valueOf(stationID)); |
| | | List<ConnectorStatusInfo> connectorStatusInfos = new ArrayList<>(); |
| | | for (TChargingGun chargingGun : chargingGuns) { |
| | | ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); |
| | | connectorStatusInfo.setOperatorID(operatorId); |
| | | connectorStatusInfo.setEquipmentOwnerID(operatorId); |
| | | connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); |
| | | connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); |
| | | connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | connectorStatusInfo.setEquipmentClassification(1); |
| | | switch (chargingGun.getStatus()){ |
| | | case 1: |
| | | connectorStatusInfo.setStatus(0); |
| | | break; |
| | | case 2: |
| | | connectorStatusInfo.setStatus(1); |
| | | break; |
| | | case 3: |
| | | connectorStatusInfo.setStatus(2); |
| | | break; |
| | | case 4: |
| | | connectorStatusInfo.setStatus(3); |
| | | break; |
| | | case 5: |
| | | connectorStatusInfo.setStatus(3); |
| | | break; |
| | | case 6: |
| | | connectorStatusInfo.setStatus(4); |
| | | break; |
| | | case 7: |
| | | connectorStatusInfo.setStatus(255); |
| | | break; |
| | | } |
| | | connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | connectorStatusInfos.add(connectorStatusInfo); |
| | | } |
| | | stationStatusInfo.setConnectorStatusInfos(connectorStatusInfos); |
| | | stationStatusInfos.add(stationStatusInfo); |
| | | } |
| | | } |
| | | queryStationStatusResult.setStationStatusInfos(stationStatusInfos); |
| | | } |
| | | String timeStamp = System.currentTimeMillis() + ""; |
| | | SequenceGenerator generator = new SequenceGenerator(); |
| | | String nextSequence = generator.getNextSequence(); |
| | | String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationStatusResult)); |
| | | String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); |
| | | BaseResult baseResult = new BaseResult(); |
| | | baseResult.setData(data); |
| | | baseResult.setSig(hmacMD5); |
| | | baseResult.setRet(0); |
| | | baseResult.setMsg("OK"); |
| | | baseResult.setOperatorID("906171535"); |
| | | return baseResult; |
| | | } |
| | | |
| | | // 测试环境 |
| | | private static final String OperatorID = "MA01H3BQ2"; |
| | | private static final String OperatorSecret = "f1331ef0b37c2d1b"; |
| | | private static final String SigSecret = "a6fedf0e1b27d6f7"; |
| | | private static final String DataSecret = "50a61b93919c9604"; |
| | | private static final String DataSecretIV = "7c8ac6861661d584"; |
| | | |
| | | private static final String OurDataSecret = "50a61b93919c9605"; |
| | | private static final String OurDataSecretIV = "7c8ac6861661d585"; |
| | | private static final String OurSigSecret = "a6fedf0e1b27d6f6"; |
| | | private static final String OurOperatorID = "MA01H3BQ3"; |
| | | private static final String OurOperatorSecret = "f1331ef0b37c2d1a"; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 推送充电设备接口状态信息 |
| | | * @param chargingGun |
| | | * @return |
| | | */ |
| | | public R pushSuperviseNotificationStationStatus(TChargingGun chargingGun){ |
| | | ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); |
| | | connectorStatusInfo.setOperatorID(operatorId); |
| | | connectorStatusInfo.setEquipmentOwnerID(operatorId); |
| | | connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); |
| | | connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); |
| | | connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | connectorStatusInfo.setEquipmentClassification(1); |
| | | switch (chargingGun.getStatus()){ |
| | | case 1: |
| | | connectorStatusInfo.setStatus(0); |
| | | break; |
| | | case 2: |
| | | connectorStatusInfo.setStatus(1); |
| | | break; |
| | | case 3: |
| | | connectorStatusInfo.setStatus(2); |
| | | break; |
| | | case 4: |
| | | connectorStatusInfo.setStatus(3); |
| | | break; |
| | | case 5: |
| | | connectorStatusInfo.setStatus(3); |
| | | break; |
| | | case 6: |
| | | connectorStatusInfo.setStatus(4); |
| | | break; |
| | | case 7: |
| | | connectorStatusInfo.setStatus(255); |
| | | break; |
| | | } |
| | | connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | List<Operator> operators = operatorClient.getAllOperator().getData(); |
| | | for (Operator operator : operators) { |
| | | tcecSuperviseUtil.notificationStationStatus(operator, connectorStatusInfo); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | /** |
| | | * 推送充电状态信息 |
| | | * @param chargingOrder |
| | | * @return |
| | | */ |
| | | public R pushSuperviseNotificationEquipChargeStatus(TChargingOrder chargingOrder){ |
| | | SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus(); |
| | | supEquipChargeStatus.setOperatorID(operatorId); |
| | | supEquipChargeStatus.setEquipmentOwnerID(operatorId); |
| | | supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId())); |
| | | supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); |
| | | supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode()); |
| | | switch (chargingOrder.getStatus()){ |
| | | case 2: |
| | | supEquipChargeStatus.setConnectorStatus(1); |
| | | break; |
| | | case 3: |
| | | supEquipChargeStatus.setConnectorStatus(2); |
| | | break; |
| | | case 4: |
| | | supEquipChargeStatus.setConnectorStatus(3); |
| | | break; |
| | | case 5: |
| | | supEquipChargeStatus.setConnectorStatus(4); |
| | | break; |
| | | } |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); |
| | | supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber()); |
| | | supEquipChargeStatus.setEquipmentClassification(1); |
| | | supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | switch (chargingGun.getStatus()){ |
| | | case 1: |
| | | supEquipChargeStatus.setConnectorStatus(0); |
| | | break; |
| | | case 2: |
| | | supEquipChargeStatus.setConnectorStatus(1); |
| | | break; |
| | | case 3: |
| | | supEquipChargeStatus.setConnectorStatus(2); |
| | | break; |
| | | case 4: |
| | | supEquipChargeStatus.setConnectorStatus(3); |
| | | break; |
| | | case 5: |
| | | supEquipChargeStatus.setConnectorStatus(3); |
| | | break; |
| | | case 6: |
| | | supEquipChargeStatus.setConnectorStatus(4); |
| | | break; |
| | | case 7: |
| | | supEquipChargeStatus.setConnectorStatus(255); |
| | | break; |
| | | } |
| | | supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent()); |
| | | supEquipChargeStatus.setSOC(new BigDecimal(chargingOrder.getEndSoc())); |
| | | supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); |
| | | supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence()); |
| | | List<Operator> operators = operatorClient.getAllOperator().getData(); |
| | | for (Operator operator : operators) { |
| | | tcecSuperviseUtil.notificationSupEquipChargeStatus(operator, supEquipChargeStatus); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | /** |
| | | * 推送充电订单信息 |
| | | * @param chargingOrder |
| | | * @return |
| | | */ |
| | | public R pushSuperviseNotificationChargeOrderInfo(TChargingOrder chargingOrder){ |
| | | SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo(); |
| | | supChargeOrderInfo.setOperatorID(operatorId); |
| | | supChargeOrderInfo.setEquipmentOwnerID(operatorId); |
| | | supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId())); |
| | | supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); |
| | | supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode()); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); |
| | | supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | supChargeOrderInfo.setEquipmentClassification(1); |
| | | supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); |
| | | supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); |
| | | supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence()); |
| | | supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); |
| | | supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge()); |
| | | supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount()); |
| | | switch (chargingOrder.getEndMode()){ |
| | | case 0: |
| | | supChargeOrderInfo.setStopReason(5); |
| | | supChargeOrderInfo.setStopDesc("异常终止"); |
| | | break; |
| | | case 1: |
| | | supChargeOrderInfo.setStopReason(0); |
| | | supChargeOrderInfo.setStopDesc("用户手动停止充电"); |
| | | break; |
| | | case 2: |
| | | supChargeOrderInfo.setStopReason(1); |
| | | supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电"); |
| | | break; |
| | | case 3: |
| | | supChargeOrderInfo.setStopReason(1); |
| | | supChargeOrderInfo.setStopDesc("费用不足中止"); |
| | | break; |
| | | } |
| | | |
| | | List<Operator> operators = operatorClient.getAllOperator().getData(); |
| | | for (Operator operator : operators) { |
| | | tcecSuperviseUtil.notificationChargeOrderInfo(operator, supChargeOrderInfo); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 推送充换电站信息 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @PostMapping("/supervise_notification_station_info") |
| | | public R superviseNotificationStationInfo(@RequestParam("id") Integer id){ |
| | | String serviceTel = systemConfigurationClient.getServerPhone().getData(); |
| | | Site site = siteClient.getSiteAll().getData().stream().filter(e -> e.getId().equals(id)).findFirst().orElse(new Site()); |
| | | |
| | | List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(Collections.singletonList(site.getId())).getData(); |
| | | List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); |
| | | List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); |
| | | SupStationInfo supStationInfo = new SupStationInfo(); |
| | | supStationInfo.setStationID(site.getId().toString()); |
| | | supStationInfo.setStationUniqueNumber(site.getDistrictsCode() + "906171535" + site.getId()); |
| | | supStationInfo.setOperatorID("906171535"); |
| | | supStationInfo.setEquipmentOwnerID("906171535"); |
| | | supStationInfo.setStationName(site.getName()); |
| | | supStationInfo.setCountryCode(site.getCountryCode()); |
| | | supStationInfo.setAreaCode(site.getCityCode()); |
| | | supStationInfo.setAddress(site.getAddress()); |
| | | supStationInfo.setAreaCodeCountryside(site.getAreaCodeCountryside()); |
| | | supStationInfo.setStationTel(site.getPhone()); |
| | | |
| | | supStationInfo.setServiceTel(serviceTel); |
| | | supStationInfo.setStationClassification(site.getStationClassification()); |
| | | supStationInfo.setGeneralApplicationType(site.getGeneralApplicationType()); |
| | | supStationInfo.setStationType(site.getSiteType()); |
| | | supStationInfo.setStationStatus(site.getStatus()); |
| | | supStationInfo.setParkNums(site.getParkingSpace()); |
| | | supStationInfo.setStationLat(new BigDecimal(site.getLat()).setScale(6, RoundingMode.DOWN)); |
| | | supStationInfo.setStationLng(new BigDecimal(site.getLon()).setScale(6, RoundingMode.DOWN)); |
| | | supStationInfo.setSiteGuide(site.getGuide()); |
| | | supStationInfo.setConstruction(site.getConstructionSite() == 0 ? ConstructionEnum.OTHER.getType() : site.getConstructionSite()); |
| | | supStationInfo.setPictures(StringUtils.isNotEmpty(site.getImgUrl()) ? Arrays.asList(site.getImgUrl().split(",")) : new ArrayList<>()); |
| | | |
| | | supStationInfo.setMatchCars(site.getVehicleDescription()); |
| | | if (org.springframework.util.StringUtils.hasLength(site.getSwapMatchCars())){ |
| | | supStationInfo.setSwapMatchCars(Arrays.asList(site.getSwapMatchCars().split(","))); |
| | | } |
| | | supStationInfo.setBusineHours(site.getStartServiceTime()); |
| | | supStationInfo.setRoundTheClock(site.getRoundTheClock()); |
| | | supStationInfo.setParkType(site.getParkType()); |
| | | supStationInfo.setParkFee("{\"rules\":"+site.getParkFee()+","+"\"freeDuration\":"+site.getParkFeeFree()+"}"); |
| | | supStationInfo.setElectricityType(site.getElectricityType()); |
| | | supStationInfo.setBusinessExpandType(site.getBusinessExpandType()); |
| | | supStationInfo.setCapacity(site.getCapacity()); |
| | | supStationInfo.setRatedPower(site.getRatedPower()); |
| | | supStationInfo.setPeriodFee(site.getPeriodFee()); |
| | | supStationInfo.setOfficialRunTime(site.getOfficialRunTime()); |
| | | supStationInfo.setStationOrientation(site.getStationOrientation()); |
| | | supStationInfo.setStationArea(site.getStationArea()); |
| | | supStationInfo.setHavePerson(site.getHavePerson()); |
| | | supStationInfo.setVideoMonitor(site.getVideoMonitor()); |
| | | if (StringUtils.isNotEmpty(site.getSupportingFacilities())){ |
| | | String[] split = site.getSupportingFacilities().split(","); |
| | | List<Integer> collect = Arrays.stream(split).map(Integer::parseInt).collect(Collectors.toList()); |
| | | supStationInfo.setSupportingFacilities(collect); |
| | | } |
| | | supStationInfo.setPrinterFlag(site.getPrinterFlag()); |
| | | supStationInfo.setBarrierFlag(site.getBarrierFlag()); |
| | | supStationInfo.setParkingLockFlag(site.getParkingLockFlag()); |
| | | supStationInfo.setEquipmentInfos(buildEquipmentInfo(site.getId(), tChargingPiles, chargingGunList)); |
| | | // supStationInfo.setSwapEquipmentInfos(); |
| | | supStationInfo.setElectricityFee("{"+site.getElectricityFee()+"}"); |
| | | supStationInfo.setEquipmentOwnerName(site.getEquipmentOwnerName()); |
| | | supStationInfo.setResidentNo(site.getResidentNo()); |
| | | supStationInfo.setSupplyType(site.getSupplyType()); |
| | | supStationInfo.setWattHourMeterNo(site.getWattHourMeterNo()); |
| | | supStationInfo.setForwardPower(site.getForwardPower()); |
| | | supStationInfo.setServiceFee("{"+site.getServiceFee()+"}"); |
| | | supStationInfo.setRecordUniqueNo(site.getRecordUniqueNo()); |
| | | BaseResult baseResult = new BaseResult(); |
| | | SupStationInfoResult supStationInfoResult = new SupStationInfoResult(); |
| | | supStationInfoResult.setSupStationInfo(supStationInfo); |
| | | tcecSuperviseUtil.superviseNotificationStationInfo(supStationInfoResult); |
| | | return R.ok(baseResult); |
| | | } |
| | | // |
| | | // |
| | | // /** |