From 79f1a19bb3344de47dff029cf5498d787e223782 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 28 七月 2026 19:56:11 +0800
Subject: [PATCH] 各类修复

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java |   35 ++++++++++++++++++++++++++++++++++-
 1 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 5ca26f5..54fb61d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -66,6 +66,7 @@
 import com.ruoyi.order.vo.ChargingSimulationVO;
 import com.ruoyi.order.vo.IcbcAdminSubOrderVO;
 import com.ruoyi.order.vo.StatisticsOfBatteryVO;
+import com.ruoyi.order.vo.ReservationRecommendationVO;
 import com.ruoyi.order.vo.UpdateOrderPaymentAmountDto;
 import com.ruoyi.order.vo.WatchChargingOrderVo;
 import com.ruoyi.other.api.feignClient.RoleSiteClient;
@@ -166,6 +167,8 @@
     @Resource
     private TOrderInvoiceService invoiceService;
     @Resource
+    private TOrderInvoiceDetailService orderInvoiceDetailService;
+    @Resource
     private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
     @Resource
     private PartnerClient partnerClient;
@@ -183,6 +186,12 @@
     private OtherClient otherClient;
     @Resource
     private SysUserRoleClient sysUserRoleClient;
+
+    @GetMapping("/reservationRecommendation")
+    @ApiOperation(value = "获取站点预约充电推荐时段", tags = {"管理后台-充电桩信息"})
+    public R<ReservationRecommendationVO> getReservationRecommendation(@RequestParam Integer siteId) {
+        return R.ok(chargingOrderService.getReservationRecommendation(siteId));
+    }
 
     /** 小程序加盟商看板:站点范围始终从登录账号绑定关系解析。 */
     @PostMapping("/app/franchisee/charge-data")
@@ -731,6 +740,7 @@
     @PostMapping(value = "/pay/order/list")
     @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"})
     public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto) {
+        resolveInvoiceOrderIds(payOrderQueryDto);
         return chargingOrderService.payOrderQuery(payOrderQueryDto);
     }
 
@@ -740,6 +750,7 @@
     @ApiOperation(value = "导出查看订单列表", tags = {"管理后台-支付订单-订单信息"})
     @Log(title = "发票管理查看订单导出", businessType = BusinessType.EXPORT)
     public void exportPayOrder(@RequestBody PayOrderQueryDto payOrderQueryDto) {
+        resolveInvoiceOrderIds(payOrderQueryDto);
         payOrderQueryDto.setPageCurr(1);
         payOrderQueryDto.setPageSize(10000);
         R<PageInfo<PayOrderDto>> result = chargingOrderService.payOrderQuery(payOrderQueryDto);
@@ -761,6 +772,26 @@
         } catch (IOException e) {
             log.error("导出查看订单列表失败", e);
         }
+    }
+
+    /**
+     * 查看开票订单时以数据库中的开票明细为准,避免前端遗漏或篡改订单 ID。
+     */
+    private void resolveInvoiceOrderIds(PayOrderQueryDto query) {
+        if (query == null || query.getInvoiceId() == null) {
+            return;
+        }
+        LambdaQueryWrapper<TOrderInvoiceDetail> wrapper = new LambdaQueryWrapper<TOrderInvoiceDetail>()
+                .eq(TOrderInvoiceDetail::getOrderInvoiceId, query.getInvoiceId());
+        if (query.getType() != null) {
+            wrapper.eq(TOrderInvoiceDetail::getOrderType, query.getType());
+        }
+        List<String> orderIds = orderInvoiceDetailService.list(wrapper).stream()
+                .map(TOrderInvoiceDetail::getOrderId)
+                .filter(Objects::nonNull)
+                .map(String::valueOf)
+                .collect(Collectors.toList());
+        query.setIds(orderIds);
     }
 
     private PayOrderExport buildPayOrderExport(PayOrderDto dto) {
@@ -1741,7 +1772,9 @@
         }
         boolean platformVisible = !partnerView;
         if(platformVisible){
-            BigDecimal data = parkingLotClient.getRecordAmount().getData();
+            R<BigDecimal> parkingAmountResult = parkingLotClient.getRecordAmount(siteIds);
+            BigDecimal data = parkingAmountResult == null || parkingAmountResult.getData() == null
+                    ? BigDecimal.ZERO : parkingAmountResult.getData();
             map.put("parkingAmount",data);
             BigDecimal data1 =   shoppingOrderService.getSumAmount();
             map.put("shopAmount",data1);

--
Gitblit v1.7.1