| | |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | 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.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.feignClient.ChargingOrderAccountingStrategyClient; |
| | | import com.ruoyi.order.api.feignClient.ChargingOrderClient; |
| | | import com.ruoyi.order.api.model.AddTripartitePlatformOrder; |
| | |
| | | import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; |
| | | import com.ruoyi.other.api.domain.Operator; |
| | | import com.ruoyi.other.api.feignClient.OperatorClient; |
| | | import com.ruoyi.other.api.feignClient.SystemConfigurationClient; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient; |
| | | |
| | | @Resource |
| | | private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; |
| | | |
| | | @Resource |
| | | private TokenUtil tokenUtil; |
| | | |
| | | @Resource |
| | |
| | | |
| | | @Resource |
| | | private ParkingRecordClient parkingRecordClient; |
| | | |
| | | @Resource |
| | | private SystemConfigurationClient systemConfigurationClient; |
| | | |
| | | |
| | | |
| | |
| | | List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); |
| | | List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); |
| | | List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); |
| | | |
| | | String serviceTel = systemConfigurationClient.getServerPhone().getData(); |
| | | List<StationInfo> StationInfos = new ArrayList<>(); |
| | | for (Site datum : sites) { |
| | | StationInfo stationInfo = new StationInfo(); |
| | |
| | | stationInfo.setAreaCode(datum.getDistrictsCode()); |
| | | stationInfo.setAddress(datum.getAddress()); |
| | | stationInfo.setStationTel(datum.getPhone()); |
| | | stationInfo.setServiceTel(datum.getServicePhone()); |
| | | stationInfo.setServiceTel(serviceTel); |
| | | switch (datum.getSiteType()){ |
| | | case 0: |
| | | stationInfo.setStationType(StationTypeEnum.OTHER.getType()); |
| | |
| | | List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList()); |
| | | for (TChargingGun chargingGun : collect) { |
| | | ConnectorInfo connectorInfo = new ConnectorInfo(); |
| | | connectorInfo.setConnectorID(chargingGun.getId().toString()); |
| | | connectorInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | connectorInfo.setConnectorName(chargingGun.getName()); |
| | | switch (chargingGun.getType()){ |
| | | case 0: |
| | |
| | | * @return |
| | | */ |
| | | @PostMapping("/pushChargingGunStatus") |
| | | public R pushChargingGunStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status){ |
| | | public R pushChargingGunStatus(@RequestParam("fullNumber") String fullNumber, @RequestParam("status") Integer status){ |
| | | ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); |
| | | connectorStatusInfo.setConnectorID(id.toString()); |
| | | connectorStatusInfo.setConnectorID(fullNumber); |
| | | switch (status){ |
| | | case 1: |
| | | connectorStatusInfo.setStatus(0); |
| | |
| | | List<TChargingGun> collect2 = chargingGunList.stream().filter(s -> s.getSiteId().equals(datum.getId())).collect(Collectors.toList()); |
| | | for (TChargingGun chargingGun : collect2) { |
| | | ConnectorStatusInfo info = new ConnectorStatusInfo(); |
| | | info.setConnectorID(chargingGun.getId().toString()); |
| | | info.setConnectorID(chargingGun.getFullNumber()); |
| | | switch (chargingGun.getStatus()){ |
| | | case 1: |
| | | info.setStatus(0); |
| | |
| | | List<TChargingOrder> tChargingOrders1 = collect2.get(integer1); |
| | | BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData(); |
| | | ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo(); |
| | | connectorStatsInfo.setConnectorID(integer1.toString()); |
| | | connectorStatsInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | connectorStatsInfo.setConnectorElectricity(reduce2); |
| | | ConnectorStatsInfos.add(connectorStatsInfo); |
| | | } |
| | |
| | | log.info("三方平台设备认证请求Data:" + decrypt); |
| | | QueryEquipAuth queryEquipAuth = JSON.parseObject(decrypt, QueryEquipAuth.class); |
| | | String connectorID = queryEquipAuth.getConnectorID(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData(); |
| | | if(null == tChargingGun){ |
| | | baseResult.setRet(4004); |
| | | baseResult.setMsg("connectorID 参数无效"); |
| | |
| | | queryEquipBusinessPolicyResult.setSuccStat(0); |
| | | queryEquipBusinessPolicyResult.setFailReason(0); |
| | | String connectorID = queryEquipBusinessPolicy.getConnectorID(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData(); |
| | | if(null == tChargingGun){ |
| | | baseResult.setRet(4004); |
| | | baseResult.setMsg("connectorID 参数无效"); |
| | |
| | | result.setStartChargeSeq(queryStartCharge.getStartChargeSeq()); |
| | | result.setConnectorID(queryStartCharge.getConnectorID()); |
| | | String connectorID = queryStartCharge.getConnectorID(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunById(Integer.valueOf(connectorID)).getData(); |
| | | TChargingGun tChargingGun = chargingGunClient.getChargingGunByFullNumber(connectorID).getData(); |
| | | //设备不存在 |
| | | if(null == tChargingGun){ |
| | | baseResult.setRet(4004); |
| | |
| | | baseResult.setData(encrypt); |
| | | baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); |
| | | log.info("三方平台请求开始充电响应参数:" + JacksonUtils.toJson(baseResult)); |
| | | |
| | | //定义定时任务推送订单状态 |
| | | ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); |
| | | Runnable task = new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | TChargingOrder chargingOrder = chargingOrderClient.getChargingOrderByStartChargeSeq(result.getStartChargeSeq()).getData(); |
| | | if(chargingOrder.getStatus() != 3){ |
| | | scheduler.shutdown(); |
| | | return; |
| | | } |
| | | log.info("开始执行三方平台定时推送"); |
| | | notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }; |
| | | //一分钟执行一次 |
| | | scheduler.scheduleAtFixedRate(task, 10, 10, TimeUnit.SECONDS); |
| | | 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(); |
| | | } |
| | | |
| | |
| | | queryEquipChargeStatusResult.setStartChargeSeqStat(4); |
| | | break; |
| | | } |
| | | queryEquipChargeStatusResult.setConnectorID(chargingOrder.getChargingGunId().toString()); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); |
| | | queryEquipChargeStatusResult.setConnectorID(chargingGun.getFullNumber()); |
| | | //1=离线,2=空闲,3=占用(未充电),4=占用(充电中),5=占用(已充满),6=占用(预约锁定),7=故障 |
| | | switch (chargingGun.getStatus()){ |
| | | case 1: |
| | |
| | | } |
| | | queryEquipChargeStatusResult.setCurrentA(chargingOrder.getCurrent()); |
| | | queryEquipChargeStatusResult.setVoltageA(chargingOrder.getVoltage()); |
| | | queryEquipChargeStatusResult.setSoc(chargingOrder.getTotalElectricity()); |
| | | UploadRealTimeMonitoringData timeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); |
| | | queryEquipChargeStatusResult.setSoc(null == timeMonitoringData ? BigDecimal.ZERO : new BigDecimal(timeMonitoringData.getSoc())); |
| | | queryEquipChargeStatusResult.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).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()); |
| | | queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getTotalElectricity().add(chargingOrder.getServiceCharge())); |
| | | |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | if(data.size() > 0){ |
| | | BigDecimal totalElectricity = data.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal serviceCharge = data.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | queryEquipChargeStatusResult.setElecMoney(totalElectricity); |
| | | queryEquipChargeStatusResult.setSeviceMoney(serviceCharge); |
| | | queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getPaymentAmount()); |
| | | }else{ |
| | | queryEquipChargeStatusResult.setElecMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount())); |
| | | queryEquipChargeStatusResult.setSeviceMoney(BigDecimal.ZERO); |
| | | queryEquipChargeStatusResult.setTotalMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount())); |
| | | } |
| | | |
| | | //构建充电明细 |
| | | List<ChargeDetail> chargeDetails = new ArrayList<>(); |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | |
| | | LocalDateTime startTime = chargingOrder.getStartTime(); |
| | | LocalDateTime startTime = null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getStartTime(); |
| | | 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")); |
| | |
| | | if(null == chargingOrder){ |
| | | return null; |
| | | } |
| | | notificationChargeOrderInfo.setConnectorID(chargingOrder.getChargingGunId().toString()); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); |
| | | notificationChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | notificationChargeOrderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).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()); |
| | | notificationChargeOrderInfo.setTotalMoney(chargingOrder.getTotalElectricity().add(chargingOrder.getServiceCharge())); |
| | | notificationChargeOrderInfo.setTotalDelayMoney(BigDecimal.ZERO); |
| | | |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | if(data.size() > 0){ |
| | | BigDecimal totalElectricity = data.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal serviceCharge = data.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | notificationChargeOrderInfo.setTotalElecMoney(totalElectricity.setScale(2, RoundingMode.HALF_EVEN)); |
| | | notificationChargeOrderInfo.setTotalSeviceMoney(serviceCharge.setScale(2, RoundingMode.HALF_EVEN)); |
| | | notificationChargeOrderInfo.setTotalMoney(chargingOrder.getPaymentAmount()); |
| | | }else{ |
| | | notificationChargeOrderInfo.setTotalElecMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount())); |
| | | notificationChargeOrderInfo.setTotalSeviceMoney(BigDecimal.ZERO); |
| | | notificationChargeOrderInfo.setTotalMoney(chargingOrder.getRechargeAmount().subtract(chargingOrder.getResidualAmount())); |
| | | } |
| | | |
| | | |
| | | TParkingRecord parkingRecord = parkingRecordClient.getParkingRecordByChargingOrderId(chargingOrder.getId()).getData(); |
| | | if(null != parkingRecord && parkingRecord.getStatus() == 3){ |
| | | notificationChargeOrderInfo.setTotalDelayMoney(parkingRecord.getPayment()); |
| | |
| | | |
| | | //构建充电明细 |
| | | List<ChargeDetail> chargeDetails = new ArrayList<>(); |
| | | List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData(); |
| | | |
| | | LocalDateTime startTime = chargingOrder.getStartTime(); |
| | | LocalDateTime startTime = null == chargingOrder.getStartTime() ? LocalDateTime.now() : chargingOrder.getStartTime(); |
| | | 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")); |
| | |
| | | if(null == chargingOrder){ |
| | | return null; |
| | | } |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); |
| | | OrderInfo orderInfo = new OrderInfo(); |
| | | orderInfo.setStartChargeSeq(chargingOrder.getStartChargeSeq()); |
| | | orderInfo.setConnectorID(chargingOrder.getChargingGunId().toString()); |
| | | orderInfo.setConnectorID(chargingGun.getFullNumber()); |
| | | orderInfo.setStartTime((null == chargingOrder.getStartTime() ? chargingOrder.getCreateTime() : chargingOrder.getStartTime()).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()); |