Pu Zhibing
2026-01-06 4ac4fbae929696ce0151de667139ad46d094a589
修改bug
7个文件已修改
200 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -101,4 +101,6 @@
    private Boolean authInfo = true;
    @ApiModelProperty(value = "充电曲线按钮权限 ")
    private Boolean authCurve = true;
    @ApiModelProperty(value = "计费策略名称")
    private String accountingStrategyName;
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -47,10 +47,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -237,7 +234,7 @@
    @PostMapping("/getParkingRecord")
    public R<TParkingRecord> getParkingRecord(@RequestBody GetParkingRecord query){
        TParkingRecord one = parkingRecordService.getOne(new LambdaQueryWrapper<TParkingRecord>()
                .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).eq(TParkingRecord::getStatus, query.getStatus()));
                .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).orderByDesc(TParkingRecord::getCreateTime).last(" limit 0, 1"));
        return R.ok(one);
    }
    
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
@@ -53,7 +53,6 @@
            return null;
        }
        GetParkingRecord query = new GetParkingRecord();
        query.setStatus(1);
        query.setLicensePlate(carNumber);
        TParkingRecord data = parkingRecordClient.getParkingRecord(query).getData();
        if(null == data){
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -3,6 +3,7 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.TAppUser;
@@ -85,9 +86,7 @@
    private AccountingStrategyOrderService accountingStrategyOrderService;
    @Resource
    private TChargingOrderAccountingStrategyService tChargingOrderAccountingStrategyService;
    @Resource
    private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
    
    
    @RequiresPermissions(value = {"/chargingPeriodStatistics"}, logical = Logical.OR)
@@ -118,9 +117,9 @@
        List<Site> data9 = siteClient.getSiteAll().getData();
        List<TAppUser> data6 = appUserClient.getAllUser().getData();
        List<Partner> data7 = siteClient.getAllPartner().getData();
        List<AccountingStrategyOrder> listAll = accountingStrategyOrderService.lambdaQuery()
                .list();
        List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list();
//        List<Long> collect = exportList.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
//        List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
//                .in("charging_order_id", collect));
        List<TVip> data5 = vipClient.getAllVip().getData();
        List<TAppUserCar> data8 = appUserCarClient.getAllCar().getData();
        for (ChargingOrderListVO chargingOrderListVO : exportList) {
@@ -145,13 +144,7 @@
            tChargingOrderExport.setId(i);
            tChargingOrderExport.setCode(chargingOrderListVO.getCode());
            tChargingOrderExport.setTerminalName(chargingOrderListVO.getTerminalName());
            // 查询这笔订单的计费策略名称
            List<AccountingStrategyOrder> list = listAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
            if (!list.isEmpty()){
                tChargingOrderExport.setName(list.get(0).getName());
            }
            tChargingOrderExport.setName(chargingOrderListVO.getAccountingStrategyName());
            tChargingOrderExport.setOrderClassification("1");
            tChargingOrderExport.setStartType("扫码");
            tChargingOrderExport.setOne("小程序");
@@ -201,35 +194,32 @@
            tChargingOrderExport.setServiceCharge(chargingOrderListVO.getServiceCharge()+"");
            tChargingOrderExport.setTotal(chargingOrderListVO.getPaymentAmount()+"");
            tChargingOrderExport.setChargingCapacity(chargingOrderListVO.getElectricity()+"");
            List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
            if (!stageCost.isEmpty()){
                // 累加时段电费单价 取平均值
                BigDecimal bigDecimal1 = new BigDecimal("0");
                BigDecimal bigDecimal2 = new BigDecimal("0");
                BigDecimal bigDecimal3 = new BigDecimal("0");
                BigDecimal size = new BigDecimal(stageCost.size());
                for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) {
                    bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice());
                    bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice());
                    bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
                }
                BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN);
                BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN);
                BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN);
                tChargingOrderExport.setElectrovalencePrice(divide1+"");
                tChargingOrderExport.setServiceChargePrice(divide2+"");
                tChargingOrderExport.setServiceChargePriceLook(divide3+"");
            }
            if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){
                LocalDateTime startTime = chargingOrderListVO.getStartTime();
                LocalDateTime endTime = chargingOrderListVO.getEndTime();
                // 计算时间差 单位秒
                long between = ChronoUnit.SECONDS.between(startTime, endTime);
                tChargingOrderExport.setCumulativeChargingTime((between*60)+"");
            }
//            List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
//            if (!stageCost.isEmpty()){
//                // 累加时段电费单价 取平均值
//                BigDecimal bigDecimal1 = new BigDecimal("0");
//                BigDecimal bigDecimal2 = new BigDecimal("0");
//                BigDecimal bigDecimal3 = new BigDecimal("0");
//                BigDecimal size = new BigDecimal(stageCost.size());
//
//                for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) {
//                    bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice());
//                    bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice());
//                    bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
//                }
//                BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN);
//                BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN);
//                BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN);
//                tChargingOrderExport.setElectrovalencePrice(divide1+"");
//                tChargingOrderExport.setServiceChargePrice(divide2+"");
//                tChargingOrderExport.setServiceChargePriceLook(divide3+"");
//            }
            tChargingOrderExport.setElectrovalencePrice("");
            tChargingOrderExport.setServiceChargePrice("");
            tChargingOrderExport.setServiceChargePriceLook("");
            tChargingOrderExport.setCumulativeChargingTime(chargingOrderListVO.getChargingSecond() + "");
            tChargingOrderExport.setRechargeAmount(chargingOrderListVO.getRechargeAmount().toString());
            tChargingOrderExport.setRefundAmount(chargingOrderListVO.getRefundAmount().toString());
            tChargingOrderExport.setRefundAmount(null != chargingOrderListVO.getRefundAmount() ? chargingOrderListVO.getRefundAmount().toString() : "");
            tChargingOrderExport.setStartSoc(chargingOrderListVO.getStartSoc());
            tChargingOrderExport.setEndtSoc(chargingOrderListVO.getEndSoc());
            tChargingOrderExport.setIsSoc("否");
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -82,7 +82,7 @@
    List<Map<String, Object>> getYearData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
    List<ChargingOrderListVO> chargingList(@Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
    List<Map<String, Object>> chargingList1(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2183,13 +2183,16 @@
        String endTime1 = null;
        String endTime2 = null;
        List<TChargingGun> allGun = chargingGunClient.getAllGun().getData();
        List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
        if (StringUtils.hasLength(dto.getStartTime())) {
            String[] split = dto.getStartTime().split(" - ");
            startTime1 = split[0];
            startTime2 = split[1];
        }
        if (StringUtils.hasLength(dto.getEndTime())) {
            String[] split = dto.getEndTime().split(" - ");
            endTime1 = split[0];
            endTime2 = split[1];
        }
        if (StringUtils.hasLength(dto.getPhone())) {
            List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
@@ -2255,32 +2258,7 @@
            }
        }
        dto.setSiteIds(siteIds);
        List<Site> sites = siteClient.getSiteAll().getData();
        // 不分页
        PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999);
        List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2);
        for (ChargingOrderListVO chargingOrderListVO : list1) {
            List<Integer> integers = new ArrayList<>();
            integers.add(chargingOrderListVO.getSiteId());
            Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
            if (site != null) {
                chargingOrderListVO.setSiteName(site.getName());
            }
            if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
                LocalDateTime startTime = chargingOrderListVO.getStartTime();
                LocalDateTime endTime = chargingOrderListVO.getEndTime();
                // 计算时间差 单位秒
                long between = ChronoUnit.SECONDS.between(startTime, endTime);
                chargingOrderListVO.setChargingSecond(between);
            }
            if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
                TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
                TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
                if (data2 != null && data1 != null) {
                    chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
                }
            }
        }
        List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(dto, startTime1, startTime2, endTime1, endTime2);
        return list1;
    }
    
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -983,55 +983,95 @@
    </select>
    <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
        select t1.*,
        t1.current as chargingCapacity,
        t1.payment_amount as paymentAmount,
        t1.electricity as chargingCapacity,
        ifnull(t2.refund_amount, 0) as refundAmount
        from t_charging_order t1
        left join t_charging_order_refund t2 on t1.id = t2.charging_order_id
        where t1.del_flag = 0 and t1.recharge_payment_status = 2
        select
        a.id,
        b.`name` as siteName,
        a.`status`,
        a.recharge_payment_type as rechargePaymentType,
        a.recharge_payment_status as rechargePaymentStatus,
        a.site_id as siteId,
        a.charging_pile_id as chargingPileId,
        a.app_user_id as appUserId,
        a.app_user_car_id as appUserCarId,
        c.license_plate as plateNum,
        a.start_charge_seq as startChargeSeq,
        a.charging_gun_id as chargingGunId,
        a.order_source as orderSource,
        a.`code`,
        a.order_type as orderType,
        d.`name` as terminalName,
        UNIX_TIMESTAMP(a.end_time) - UNIX_TIMESTAMP(a.start_time) as chargingSecond,
        a.electricity as chargingCapacity,
        a.electricity as electricity,
        a.recharge_amount as rechargeAmount,
        a.payment_amount as orderAmount,
        a.vip_discount_amount as vipDiscountAmount,
        e.refund_amount as refundAmount,
        c.license_plate as licensePlate,
        f.phone,
        a.payment_amount as paymentAmount,
        e.refund_amount as residualAmount,
        h.electrovalence as electrovalence,
        CASE WHEN a.order_source = 1 THEN h.serviceCharge ELSE h.serviceCharge * 0.8 END as serviceCharge,
        0 as commissionAmount,
        a.tripartite_platform_name as tripartitePlatformName,
        a.create_time as createTime,
        a.start_time as startTime,
        a.end_time as endTime,
        a.end_mode as endMode,
        a.pay_time as payTime,
        a.start_soc as startSoc,
        a.end_soc as endSoc,
        g.`name` as accountingStrategyName
        from charging_pile_order.t_charging_order a
        left join charging_pile_service.t_site b on (a.site_id = b.id)
        left join charging_pile_account.t_app_user_car c on (a.app_user_car_id = c.id)
        left join charging_pile_service.t_charging_gun d on (a.charging_gun_id = d.id)
        left join charging_pile_order.t_charging_order_refund e on (a.id = e.charging_order_id)
        left join charging_pile_account.t_app_user f on (a.app_user_id = f.id)
        left join charging_pile_order.t_accounting_strategy_order g on (a.id = g.charging_order_id)
        left join (select sum(period_electric_price) as electrovalence,sum(period_service_price) as serviceCharge,charging_order_id from charging_pile_order.t_charging_order_accounting_strategy group by charging_order_id) as h on (a.id = h.charging_order_id)
        where a.del_flag = 0 and a.recharge_payment_status = 2
        <if test="null != req.code and req.code!=''">
            and t1.code LIKE CONCAT('%',#{req.code},'%')
            and a.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.carIds and req.carIds.size()>0">
            and t1.app_user_car_id in
            and a.app_user_car_id in
            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.userIds and req.userIds.size()>0">
            and t1.app_user_id in
            and a.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.siteIds and req.siteIds.size()>0">
            and t1.site_id in
            and a.site_id in
            <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="req.orderType != null ">
            and t1.order_type = #{req.orderType}
            and a.order_type = #{req.orderType}
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
            and a.status = #{req.status}
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
            and a.status = #{req.status}
        </if>
        <if test="req.siteId != null ">
            and t1.site_id = #{req.siteId}
            and a.site_id = #{req.siteId}
        </if>
        <if test="startTime1 != null and startTime1!=''">
            and (t1.create_time between #{startTime1} and #{startTime2})
            and (a.create_time between #{startTime1} and #{startTime2})
        </if>
        <if test="endTime1 != null and endTime1!=''">
            and (t1.end_time between #{endTime1} and #{endTime2})
            and (a.end_time between #{endTime1} and #{endTime2})
        </if>
        and t1.start_time IS NOT NULL
        order by t1.create_time desc
        and a.start_time IS NOT NULL order by a.create_time desc
    </select>