puzhibing
2026-07-22 ba0f5c3079fedcea55e3d375f319743e5daa239e
修改地图站点查询bug
10个文件已修改
139 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
        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());
            }
            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.divide(multiply, 4, BigDecimal.ROUND_HALF_EVEN).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            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));
        list.forEach(s->{
            Integer siteId = s.getId();
            s.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));
        }
            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>