puzhibing
23 小时以前 63b68c39653208a1756640034c028789946d0e12
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1912,6 +1912,18 @@
    })
    public AjaxResult stopCharging(@PathVariable String id) {
        log.info("小程序主动发起停止充电,订单ID:{}", id);
        // VIN 码充电订单路由:VD 订单存于 t_vin_charging_order,不在 t_charging_order;
        // VD 表存在该 ID 订单时优先走 VIN 停充(内部按状态返回准确的“不能重复操作/还未开始充电”),
        // 其余情况回落普通停充。雪花 ID 两表同源生成,撞号概率可忽略
        TVinChargingOrder vinOrder = null;
        try {
            vinOrder = vinChargingOrderService.getById(Long.valueOf(id));
        } catch (NumberFormatException ignored) {
            // 非数字订单ID,按普通停充处理
        }
        if (vinOrder != null) {
            return vinChargingOrderService.stopChargingByApplet(id);
        }
        return chargingOrderService.stopCharging(id);
    }
    
@@ -2432,10 +2444,38 @@
        }
        return R.ok(result);
    }
    /**
     * 内部接口:统计公司名下进行中充电订单数(三表合计,状态 2=启动中/3=充电中/4=停止中,
     * 账户模式切换:分配→共享 前校验使用)
     */
    @PostMapping("/inner/count-active-by-company")
    public R<Integer> countActiveByCompany(@RequestParam("companyId") Integer companyId) {
        if (companyId == null) {
            return R.ok(0);
        }
        try {
            List<Integer> activeStatuses = Arrays.asList(2, 3, 4);
            long count = 0L;
            count += chargingOrderService.lambdaQuery()
                    .eq(TChargingOrder::getCompanyId, companyId)
                    .in(TChargingOrder::getStatus, activeStatuses)
                    .count();
            count += cardChargingOrderService.lambdaQuery()
                    .eq(TCardChargingOrder::getCompanyId, companyId)
                    .in(TCardChargingOrder::getStatus, activeStatuses)
                    .count();
            count += vinChargingOrderService.lambdaQuery()
                    .eq(TVinChargingOrder::getCompanyId, companyId)
                    .in(TVinChargingOrder::getStatus, activeStatuses)
                    .count();
            return R.ok((int) count);
        } catch (RuntimeException ex) {
            log.error("统计公司进行中充电订单失败:companyId={}", companyId, ex);
            return R.fail("统计公司进行中充电订单失败:" + ex.getMessage());
        }
    }
    @RequiresPermissions(value = {"/chargingOperationAnalysis"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/charging/statistics")