| | |
| | | import com.ruoyi.other.api.feignClient.SystemConfigurationClient; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | 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; |
| | |
| | | @Resource |
| | | private SystemConfigurationClient systemConfigurationClient; |
| | | |
| | | |
| | | private final static String operatorId = "906171535"; |
| | | |
| | | /** |
| | | * 请求校验 |
| | |
| | | return baseResult; |
| | | } |
| | | /** |
| | | * 查询充电站信息 |
| | | * 查询充换电站状态信息 |
| | | * @param baseRequest |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/supervise_notification_operation_stats_info") |
| | | public BaseResult superviseNotificationOperationStatsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | @PostMapping("/supervise_query_station_status") |
| | | public BaseResult superviseQueryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ |
| | | log.info("监管平台查询充换电站状态信息请求参数:" + JacksonUtils.toJson(baseRequest)); |
| | | //校验token和签名 |
| | | BaseResult baseResult = requestCheck(true, baseRequest, request); |
| | | if(0 != baseResult.getRet()){ |
| | | log.info("监管平台查询充电站信息响应Data:"); |
| | | log.info("监管平台查询充换电站状态信息响应Data:"); |
| | | baseResult.setData(""); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | log.info("监管平台查询充换电站状态信息响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | return baseResult; |
| | | } |
| | | Operator operator = baseResult.getOperator(); |
| | | //解密参数 |
| | | 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(); |
| | | List<String> stationIDs = queryStationsInfo.getStationIDs(); |
| | | if(null == pageNo){ |
| | | pageNo = 1; |
| | | 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)); |
| | | } |
| | | if(null == pageSize){ |
| | | pageSize = 50; |
| | | |
| | | 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("999999999"); |
| | | stationStatusInfo.setStationID(String.valueOf(stationID)); |
| | | List<ConnectorStatusInfo> connectorStatusInfos = new ArrayList<>(); |
| | | for (TChargingGun chargingGun : chargingGuns) { |
| | | ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); |
| | | connectorStatusInfo.setOperatorID(operatorId); |
| | | connectorStatusInfo.setEquipmentOwnerID("999999999"); |
| | | 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); |
| | | } |
| | | PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); |
| | | List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); |
| | | QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult(); |
| | | queryStationsInfoResult.setPageNo(pageNo); |
| | | 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); |
| | | String jsonString = JacksonUtils.toJson(queryStationStatusResult); |
| | | log.info("监管平台查询充电站信息响应Data:" + jsonString); |
| | | String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); |
| | | baseResult.setData(encrypt); |
| | |
| | | return baseResult; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 推送充电设备接口状态信息 |
| | | * @param chargingGun |
| | | * @return |
| | | */ |
| | | public R pushSuperviseNotificationStationStatus(TChargingGun chargingGun){ |
| | | ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); |
| | | connectorStatusInfo.setOperatorID(operatorId); |
| | | connectorStatusInfo.setEquipmentOwnerID("999999999"); |
| | | 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("999999999"); |
| | | 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("999999999"); |
| | | 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 site |