From 1266ed302b259f09a9370bc4315316b8a212b5d0 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期日, 26 一月 2025 11:42:35 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java | 135 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 123 insertions(+), 12 deletions(-) diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java index 71d189a..ca33eb3 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java @@ -1,18 +1,16 @@ package com.ruoyi.integration.drainage; import com.alibaba.fastjson.JSON; -import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient; -import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; -import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; -import com.ruoyi.chargingPile.api.feignClient.SiteClient; -import com.ruoyi.chargingPile.api.model.Site; -import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; -import com.ruoyi.chargingPile.api.model.TChargingGun; -import com.ruoyi.chargingPile.api.model.TChargingPile; +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.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.integration.drainage.kuaidian.TCECKDUtil; +import com.ruoyi.integration.drainage.kuaidian.model.NotificationStationChangeResult; +import com.ruoyi.integration.drainage.kuaidian.model.QueryTerminalCode; +import com.ruoyi.integration.drainage.kuaidian.model.QueryTerminalCodeResult; import com.ruoyi.integration.drainage.model.*; import com.ruoyi.integration.drainage.model.enu.*; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; @@ -73,6 +71,10 @@ private TokenUtil tokenUtil; private static Map<Long, Integer> map = new HashMap<>(); + + @Resource + private ParkingLotClient parkingLotClient; + /** @@ -234,11 +236,12 @@ pageSize = 10; } PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize); + 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(siteListPaging.getRecords())); + queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); //参数加密 String jsonString = JSON.toJSONString(queryStationsInfoResult); String encrypt = AESUtil.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv()); @@ -253,7 +256,7 @@ * @param sites * @return */ - public List<StationInfo> buildSite(List<Site> sites){ + public List<StationInfo> buildSite(List<TParkingLot> parkingLots, List<Site> sites){ List<Integer> siteIds = sites.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); @@ -312,12 +315,42 @@ stationInfo.setMatchCars(datum.getVehicleDescription()); stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime()); stationInfo.setElectricityFee(datum.getRateDescription()); + //添加停车费信息 + Optional<TParkingLot> first = parkingLots.stream().filter(s -> s.getSiteId().equals(datum.getId())).findFirst(); + if(first.isPresent()){ + TParkingLot tParkingLot = first.get(); + buildPlaceHolder(tParkingLot, stationInfo); + } + //构建充电设备信息数据 stationInfo.setEquipmentInfos(buildEquipmentInfo(datum.getId(), tChargingPiles, chargingGunList)); StationInfos.add(stationInfo); + } return StationInfos; } + + + /** + * 构建停车费信息 + * @param tParkingLot + * @param stationInfo + */ + public void buildPlaceHolder(TParkingLot tParkingLot, StationInfo stationInfo){ + stationInfo.setOvertimeFee(tParkingLot.getName() + "停车费"); + PlaceHolder placeHolder = new PlaceHolder(); + placeHolder.setFreeTime(tParkingLot.getChargeFreeDuration()); + placeHolder.setMaxFee(tParkingLot.getChargeCapping()); + List<PlaceHolderPrice> PlaceHolderPrices = new ArrayList<>(); + PlaceHolderPrice placeHolderPrice = new PlaceHolderPrice(); + placeHolderPrice.setStartTime("00:00"); + placeHolderPrice.setEndTime("23:59"); + placeHolderPrice.setPrice(tParkingLot.getChargeRate()); + PlaceHolderPrices.add(placeHolderPrice); + placeHolder.setPlaceHolderPrices(PlaceHolderPrices); + stationInfo.setPlaceHolder(placeHolder); + } + @@ -357,7 +390,7 @@ } //构建设备接口信息 - equipmentInfo.setConnectorInfos(buildConnectorInfos(tChargingPile.getId(), chargingGunList)); + equipmentInfo.setConnectorInfos(buildConnectorInfos(tChargingPile.getId(), tChargingPile.getCode(), chargingGunList)); equipmentInfos.add(equipmentInfo); } return equipmentInfos; @@ -369,7 +402,7 @@ * @param chargingGunList * @return */ - public List<ConnectorInfo> buildConnectorInfos(Integer chargingPileId, List<TChargingGun> chargingGunList){ + public List<ConnectorInfo> buildConnectorInfos(Integer chargingPileId, String code, List<TChargingGun> chargingGunList){ List<ConnectorInfo> connectorInfos = new ArrayList<>(); List<TChargingGun> collect = chargingGunList.stream().filter(s -> s.getChargingPileId().equals(chargingPileId)).collect(Collectors.toList()); for (TChargingGun chargingGun : collect) { @@ -402,6 +435,7 @@ connectorInfo.setPower(chargingGun.getRatedPower()); connectorInfo.setParkNo(chargingGun.getParkingNumber()); connectorInfo.setNationalStandard(Integer.valueOf(chargingGun.getNationalStandard())); + connectorInfo.setQRCode("https://mxcd.zhinenganguan.com?No=" + code + chargingGun.getCode()); connectorInfos.add(connectorInfo); } return connectorInfos; @@ -732,6 +766,49 @@ /** + * 站点变更推送通知(快电) + * @param siteIds + * @return + */ + @PostMapping("/notificationStationChange") + public R notificationStationChange(@RequestParam("siteIds") List<Integer> siteIds){ + Operator operator = operatorClient.getOperatorByName("KuaiDian").getData(); + NotificationStationChangeResult notificationStationChange = TCECKDUtil.notificationStationChange(operator, 3, siteIds); + //启动重试推送机制 + if(null == notificationStationChange || 1 == notificationStationChange.getSuccStat()){ + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); + threadPoolExecutor.execute(new Runnable() { + //计数器 + Integer size = 0; + @Override + public void run() { + NotificationStationChangeResult notificationStationChange1 = TCECKDUtil.notificationStationChange(operator, 3, siteIds); + //启动重试推送机制 + if(null != notificationStationChange1 && 0 == notificationStationChange1.getSuccStat()){ + threadPoolExecutor.shutdown(); + return; + } + size++; + if(size >= 5){ + threadPoolExecutor.shutdown(); + return; + } + //间隔一分钟重试一次 + try { + Thread.sleep(60000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }); + } + return R.ok(); + } + + + + + /** * 请求定充电 * @return */ @@ -788,6 +865,7 @@ addTripartitePlatformOrder.setOperatorId(operator.getOperatorId()); addTripartitePlatformOrder.setPaymentAmount(queryStartCharge.getPaymentAmount()); addTripartitePlatformOrder.setRechargePaymentType(queryStartCharge.getPaymentType()); + addTripartitePlatformOrder.setPlateNum(queryStartCharge.getPlateNum()); R order = chargingOrderClient.addTripartitePlatformOrder(addTripartitePlatformOrder); //启动失败 if(200 != order.getCode()){ @@ -1238,4 +1316,37 @@ notificationChargeOrderInfo.setChargeDetails(chargeDetails); return notificationChargeOrderInfo; } + + + /** + * 二维码查询抢号(快电) + * @param baseRequest + * @param request + * @return + */ + @PostMapping("/query_terminal_code") + public BaseResult queryTerminalCode(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ + //校验token和签名 + BaseResult baseResult = requestCheck(true, baseRequest, request); + if(0 != baseResult.getRet()){ + baseResult.setData(""); + baseResult.setSig(TCECUtil.buildSign(baseResult)); + return baseResult; + } + Operator operator = baseResult.getOperator(); + //解密参数 + String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + QueryTerminalCode queryTerminalCode = JSON.parseObject(decrypt, QueryTerminalCode.class); + String qrCode = queryTerminalCode.getQRCode(); + String substring = qrCode.substring(qrCode.indexOf("=") + 1); + QueryTerminalCodeResult queryTerminalCodeResult = new QueryTerminalCodeResult(); + queryTerminalCodeResult.setTerminalCode(substring); + + //参数加密 + String jsonString = JSON.toJSONString(queryTerminalCodeResult); + String encrypt = AESUtil.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv()); + baseResult.setData(encrypt); + baseResult.setSig(TCECUtil.buildSign(baseResult)); + return baseResult; + } } -- Gitblit v1.7.1