ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * 充电订单服务降级处理 @@ -233,6 +234,11 @@ public R<Long> addChargingOrder(TChargingOrder chargingOrder) { return R.fail("添加订单失败:" + throwable.getMessage()); } @Override public R<Map<Integer, BigDecimal>> getSiteChargingCapacity(List<Integer> siteIds) { return R.fail("获取站点集合中总的充电量失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * 充电订单服务 @@ -342,4 +343,13 @@ */ @PostMapping("/t-charging-order/addChargingOrder") R<Long> addChargingOrder(@RequestBody TChargingOrder chargingOrder); /** * 获取站点充电量 * @param siteIds * @return */ @PostMapping("/t-charging-order/getSiteChargingCapacity") R<Map<Integer, BigDecimal>> getSiteChargingCapacity(@RequestParam("siteIds") List<Integer> siteIds); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -296,43 +296,50 @@ siteList.setPageCurr(1); siteList.setPageSize(99999); PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); for (GetSiteListDTO record : list.getRecords()) { List<GetSiteListDTO> records = list.getRecords(); if(records.isEmpty()){ return R.ok(Collections.emptyList()); } List<Integer> collect = records.stream().map(GetSiteListDTO::getId).collect(Collectors.toList()); List<TChargingGun> tChargingGuns = chargingGunService.lambdaQuery().in(TChargingGun::getSiteId, collect).list(); List<TChargingPile> tChargingPiles = chargingPileService.lambdaQuery().in(TChargingPile::getSiteId, collect).list(); Map<Integer, BigDecimal> map = chargingOrderClient.getSiteChargingCapacity(collect).getData(); if(null == map){ return R.ok(Collections.emptyList()); } for (GetSiteListDTO record : list.getRecords()) { List<Integer> c1 = new ArrayList<>(); c1.add(3); c1.add(4); c1.add(5); c1.add(6); Long count = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, 2).count(); Long count = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 1 && s.getStatus() == 2).count(); record.setC1(count); Long count1 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).count(); Long count1 = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 1).count(); record.setC2(count1); Long count2 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, 2).count(); Long count2 = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 2 && s.getStatus() == 2).count(); record.setK1(count2); Long count3 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).count(); Long count3 = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 2).count(); record.setK2(count3); Long count4 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, 2).count(); Long count4 = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 3 && s.getStatus() == 2).count(); record.setM1(count4); Long count5 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).count(); Long count5 = tChargingGuns.stream().filter(s->s.getSiteId().equals(record.getId()) && s.getChargeMode() == 3).count(); record.setM2(count5); //利用率 BigDecimal bigDecimal = new BigDecimal("0"); //获取该站点的总充电度数 List<TChargingOrder> chargingOrders = chargingOrderClient.getList(record.getId()).getData(); for (TChargingOrder chargingOrder : chargingOrders) { bigDecimal = bigDecimal.add(chargingOrder.getChargingCapacity()); } BigDecimal bigDecimal = map.get(record.getId()); if(null == bigDecimal){ bigDecimal = BigDecimal.ZERO; } //获取该站点的所有充电桩 List<TChargingPile> chargingPiles = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, record.getId()).list(); BigDecimal bigDecimal1 = new BigDecimal("0"); for (TChargingPile chargingPile : chargingPiles) { bigDecimal1 = bigDecimal1.add(chargingPile.getRatedPower()); } BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")); BigDecimal divide = bigDecimal.divide(multiply, 4, BigDecimal.ROUND_HALF_EVEN).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN); record.setP1(divide); List<TChargingPile> chargingPiles = tChargingPiles.stream().filter(s->s.getSiteId().equals(record.getId())).collect(Collectors.toList()); BigDecimal bigDecimal1 = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal::add).orElse(new BigDecimal("0")); BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")); BigDecimal divide = BigDecimal.ZERO; if(multiply.compareTo(BigDecimal.ZERO) > 0){ divide = bigDecimal.divide(multiply, 4, BigDecimal.ROUND_HALF_EVEN).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN); } record.setP1(divide); } return R.ok(list.getRecords()); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
@@ -29,6 +29,10 @@ * @return */ PageInfo<GetSiteListDTO> getSiteList(GetSiteList siteList); PageInfo<GetSiteListDTO> getSiteList1(Long userId); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -138,14 +138,15 @@ } PageInfo<GetSiteListDTO> pageInfo = new PageInfo<>(siteList.getPageCurr(), siteList.getPageSize()); List<GetSiteListDTO> list = this.baseMapper.getSiteList(pageInfo, siteList, ids); for (GetSiteListDTO getSiteListDTO : list) { Integer siteId = getSiteListDTO.getId(); getSiteListDTO.setAuthAccountingStrategy(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_ACCOUNTING_STRATEGY)); //平台账号才有此权限 getSiteListDTO.setAuthPartner(roleType == 1 ? true : false); getSiteListDTO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_UPDATE)); getSiteListDTO.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_DELETE)); } list.forEach(s->{ Integer siteId = s.getId(); s.setAuthAccountingStrategy(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_ACCOUNTING_STRATEGY)); //平台账号才有此权限 s.setAuthPartner(roleType == 1 ? true : false); s.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_UPDATE)); s.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_DELETE)); }); return pageInfo.setRecords(list); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -2397,4 +2397,17 @@ } return R.ok(); } /** * 获取站点充电量 * @param siteIds * @return */ @PostMapping("/getSiteChargingCapacity") public R<Map<Integer, BigDecimal>> getSiteChargingCapacity(@RequestParam("siteIds") List<Integer> siteIds){ Map<Integer, BigDecimal> siteChargingCapacity = chargingOrderService.getSiteChargingCapacity(siteIds); return R.ok(siteChargingCapacity); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -221,4 +221,13 @@ */ List<Map<String, Object>> getAccountSettlementStatement(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("rechargePaymentType") Integer rechargePaymentType); /** * 获取站点充电容量 * @param siteIds * @return */ List<Map<String, Object>> getSiteChargingCapacity(@Param("siteIds") List<Integer> siteIds); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -408,4 +408,12 @@ * @param orderId */ void addOrderExpenseBreakdown(Long orderId); /** * 获取站点充电电量 * @param siteIds * @return */ Map<Integer, BigDecimal> getSiteChargingCapacity(List<Integer> siteIds); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -6032,4 +6032,17 @@ e.printStackTrace(); } } @Override public Map<Integer, BigDecimal> getSiteChargingCapacity(List<Integer> siteIds) { List<Map<String, Object>> siteChargingCapacity = this.baseMapper.getSiteChargingCapacity(siteIds); Map<Integer, BigDecimal> map = new HashMap<>(); siteChargingCapacity.forEach(s->{ Integer key = Integer.parseInt(s.get("siteId").toString()); BigDecimal value = new BigDecimal(s.get("chargingCapacity").toString()); map.put(key, value); }); return map; } } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -2452,4 +2452,20 @@ group by orderId,recharge_payment_type,site_id,recharge_amount,refund_amount,platformFee ) as aa group by aa.site_id,aa.recharge_payment_type order by aa.site_id </select> <select id="getSiteChargingCapacity" resultType="map"> select b.site_id as siteId, sum(a.charging_capacity) as chargingCapacity from t_charging_order_accounting_strategy a left join t_charging_order b on (a.charging_order_id = b.id) where b.status = 5 <if test="null != siteIds and siteIds.size() > 0"> and b.site_id in <foreach collection="siteIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> group by b.site_id </select> </mapper>