ruoyi-service/ruoyi-integration/pom.xml
@@ -152,12 +152,12 @@ <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>[3.0.40-rc, 3.2.0)</version> <version>[3.0.40-rc,3.2.0)</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-iotda</artifactId> <version>[3.0.40-rc, 3.2.0)</version> <version>[3.0.40-rc,3.2.0)</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -417,7 +417,7 @@ @ApiOperation(value = "测试",tags = {"硬件接口"}) @GetMapping(value = "/test") public R test() { public R test(String code) { String orderNum = "2024092646526785213546"; String deviceId = "3401231001200202"; Long orderId = 2024065544L; @@ -425,7 +425,7 @@ PlatformStartCharging platformStartCharging = new PlatformStartCharging(); platformStartCharging.setTransaction_serial_number(orderNum); platformStartCharging.setCharging_pile_code(deviceId); platformStartCharging.setCharging_gun_code("02"); platformStartCharging.setCharging_gun_code(code); platformStartCharging.setCard_number(orderId.toString()); platformStartCharging.setAccount_balance(money); String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging)); @@ -435,10 +435,10 @@ @ApiOperation(value = "测试",tags = {"硬件接口"}) @GetMapping(value = "/stop") public R test1() { public R test1(String code) { PlatformStopCharging platformStopCharging = new PlatformStopCharging(); platformStopCharging.setCharging_pile_code("3401231001200202"); platformStopCharging.setCharging_gun_code("02"); platformStopCharging.setCharging_gun_code(code); String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging)); return R.ok(message); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,4 +1,5 @@ package com.ruoyi.order.controller; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import java.math.BigDecimal; @@ -1919,10 +1920,11 @@ } List<Map<String,Object>> capMap = chargingOrderService.getchargingCapacity(siteIds,statisticsQueryDto); List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(chargingPiles.size())).multiply(new BigDecimal(24)); BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add); //每日利用率=当日充电度数/(总桩数量*桩总功率*24小时) BigDecimal multiply1 = new BigDecimal(chargingPiles.size()).multiply(totalRatedPower).multiply(new BigDecimal(24)); System.err.println(JSON.toJSONString(capMap) + "---" + chargingPiles.size() + "---" + totalRatedPower + "---" + multiply1); capMap.forEach(map -> { BigDecimal chargingCapacity = (BigDecimal) map.get("chargingCapacity"); BigDecimal result = chargingCapacity.divide(multiply1, 4, RoundingMode.HALF_UP); @@ -2007,49 +2009,6 @@ private static List<TChargingOrder> getSampleData() { // 这里可以替换为实际查询逻辑 List<TChargingOrder> list = new ArrayList<>(); // 示例数据 for (int i = 0; i < 24; i++) { TChargingOrder order = new TChargingOrder(); order.setStartTime(LocalDateTime.now().minusHours(23 - i)); order.setOrderAmount(BigDecimal.valueOf(i + 1)); list.add(order); } return list; } private static List<Map<String, BigDecimal>> processData(List<TChargingOrder> list) { Map<LocalDateTime, BigDecimal> hourlySum = new HashMap<>(); // 按每个小时分组并求和 for (TChargingOrder order : list) { LocalDateTime hour = order.getStartTime().truncatedTo(ChronoUnit.HOURS); BigDecimal amount = order.getOrderAmount(); hourlySum.merge(hour, amount, BigDecimal::add); } // 创建结果列表 List<Map<String, BigDecimal>> resultList = new ArrayList<>(); for (int i = 1; i <= 23; i++) { LocalDateTime keyHour = LocalDateTime.now().withHour(i); BigDecimal sum = BigDecimal.ZERO; // 计算键之后的一小时的数据之和 for (int j = i + 1; j <= 23; j++) { LocalDateTime nextHour = LocalDateTime.now().withHour(j); sum = sum.add(hourlySum.getOrDefault(nextHour, BigDecimal.ZERO)); } Map<String, BigDecimal> entry = new HashMap<>(); entry.put(String.valueOf(i), sum); resultList.add(entry); } return resultList; } /** * 硬件充电结束后的处理逻辑 @@ -2061,6 +2020,8 @@ chargingOrderService.endCharge(code, 2); } /** * 硬件异常结束充电后的处理逻辑 * @param code ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1100,7 +1100,7 @@ if(1 == doubleIntegration){ num1 *= 2; } } GetInviteUser query = new GetInviteUser(); @@ -2176,7 +2176,7 @@ discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN); payAmount = payAmount.subtract(discountAmount); periodServicePrice_total = periodServicePrice_total.subtract(discountAmount); TChargingOrder order = new TChargingOrder(); order.setId(chargingOrder.getId()); order.setAppUserId(chargingOrder.getAppUserId()); ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -1489,8 +1489,6 @@ </if> GROUP BY time ORDER BY time </select> <select id="countAllUserData" resultType="java.util.Map"> SELECT