Pu Zhibing
2024-10-22 b4b44f2021dbf083b7057fb7e192b72d08b4bf17
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
16个文件已修改
292 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
@@ -35,6 +35,8 @@
     * @param licensePlate
     * @return
     */
    @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlate")
    @PostMapping(value = "/t-app-user-car/t-app-user-car/getAppUserCarByLicensePlate")
    R<TAppUserCar> getAppUserCarByLicensePlate(@RequestParam("licensePlate") String licensePlate);
    @PostMapping(value = "/t-app-user-car/t-app-user-car/getAppUserCarByLicensePlates")
    R<List<Long>> getAppUserCarByLicensePlates(@RequestParam("licensePlate") String licensePlate);
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java
@@ -73,7 +73,7 @@
    @TableField("period_electric_price")
    private BigDecimal periodElectricPrice;
    @ApiModelProperty(value = "时段服务费")
    @ApiModelProperty(value = "时段服务费(最终服务费 含折扣)")
    @TableField("period_service_price")
    private BigDecimal periodServicePrice;
    
@@ -93,9 +93,7 @@
    @TableField(exist = false)
    private BigDecimal couponDiscount;
    @ApiModelProperty(value = "最终服务费")
    @TableField(exist = false)
    private BigDecimal finalService;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -29,6 +29,8 @@
    private String licensePlate;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "uid")
    private String uid;
    @ApiModelProperty(value = "时段数")
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -103,7 +103,7 @@
        {
            if (StringUtils.isNotEmpty(perm))
            {
                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
                permsSet.add(perm);
            }
        }
        return permsSet;
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -96,14 +96,14 @@
    </select>
    
    <select id="selectMenuPerms" resultType="String">
        select distinct m.perms
        select distinct m.path
        from sys_menu m
             left join sys_role_menu rm on m.menu_id = rm.menu_id
             left join sys_user_role ur on rm.role_id = ur.role_id
    </select>
    <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
        select distinct m.perms
        select distinct m.path
        from sys_menu m
             left join sys_role_menu rm on m.menu_id = rm.menu_id
             left join sys_user_role ur on rm.role_id = ur.role_id
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java
@@ -10,6 +10,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -47,6 +48,13 @@
        TAppUserCar one = appUserCarService.getOne(new LambdaQueryWrapper<TAppUserCar>().eq(TAppUserCar::getLicensePlate, licensePlate).eq(TAppUserCar::getDelFlag, 0));
        return R.ok(one);
    }
    @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlates")
    public R<List<Long>> getAppUserCarByLicensePlates(@RequestParam("licensePlate") String licensePlate){
        List<Long> collect = appUserCarService.list(new LambdaQueryWrapper<TAppUserCar>().like(TAppUserCar::getLicensePlate, licensePlate)
                        .eq(TAppUserCar::getDelFlag, 0)).stream()
                .map(TAppUserCar::getId).collect(Collectors.toList());
        return R.ok(collect);
    }
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -252,10 +252,10 @@
        TChargingGun chargingGun = chargingGunService.getById(id);
        siteNameVO.setGunName(chargingGun.getName());
        siteNameVO.setGunNumber(chargingGun.getCode());
        TChargingPile chargingPile = chargingPileService.getById(id);
        TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId());
        siteNameVO.setPileName(chargingPile.getName());
        siteNameVO.setPileNumber(chargingPile.getNumber());
        Site site = siteService.getById(id);
        Site site = siteService.getById(chargingGun.getSiteId());
        siteNameVO.setSiteName(site.getName());
        return R.ok(siteNameVO);
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -309,18 +309,38 @@
    @ResponseBody
    @PostMapping(value = "/chargingOrderInfo")
    @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"})
    public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) {
    public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) {
        TChargingOrder byId = chargingOrderService.getById(strategyId);
        ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO();
        chargingOrderInfoVO.setCdElectronic("");
        chargingOrderInfoVO.setCdVoltage("");
        chargingOrderInfoVO.setSurplus("");
        chargingOrderInfoVO.setTotalPower("");
        chargingOrderInfoVO.setLicensePlate("");
        chargingOrderInfoVO.setVehicleBrand("");
        chargingOrderInfoVO.setVehicleModel("");
        chargingOrderInfoVO.setVehicleUse("");
        List<TChargingOrderAccountingStrategy> tChargingOrderAccountingStrategies = new ArrayList<>();
        chargingOrderInfoVO.setList(tChargingOrderAccountingStrategies);
        chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent()+"":"");
        chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage()+"":"");
        chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity()+"":"");
        chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower()+"":"");
        if (byId.getAppUserCarId()!=null){
            List<TAppUserCar> data = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
            if (!data.isEmpty()){
                chargingOrderInfoVO.setLicensePlate(data.get(0).getLicensePlate());
                chargingOrderInfoVO.setVehicleBrand(data.get(0).getVehicleBrand());
                chargingOrderInfoVO.setVehicleModel(data.get(0).getVehicleModel());
                chargingOrderInfoVO.setVehicleUse(data.get(0).getVehicleUse());
            }
        }
        // 时段总服务费
        BigDecimal bigDecimal = new BigDecimal("0");
        List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list();
        for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) {
            bigDecimal = bigDecimal.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
            tChargingOrderAccountingStrategy.setVipDiscount(
                    tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()
                            .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice())
            );
            tChargingOrderAccountingStrategy.setCouponDiscount(
                    tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()
                            .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice())
            );
        }
        chargingOrderInfoVO.setList(list);
        return AjaxResult.success(chargingOrderInfoVO);
    }
@@ -927,7 +947,39 @@
                startDate = startDate.plusDays(1);
            }
            tCharingUserMapVO.setMap(map);
            tCharingUserMapVO.setMap(dateRangeStatistics);
            List<Map<String,Object>> map1 =  chargingOrderService.usersByQuery(statisticsQueryDto);
            List<Map<String, Object>> dateRangeStatistics1 = new ArrayList<>();
            // 遍历日期范围
            while (!startDate.isAfter(endDate)) {
                String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                Map<String, Object> dailyStats = findMapWithDateValue(map1, formattedDate);
                if (dailyStats != null) {
                    dateRangeStatistics1.add(dailyStats);
                } else {
                    Map<String, Object> dateMap = new HashMap<>();
                    dateMap.put("time", formattedDate);
                    dateMap.put("counts", 0);
                    dateRangeStatistics1.add(dateMap);
                }
                // 移动到下一天
                startDate = startDate.plusDays(1);
            }
            tCharingUserMapVO.setMap1(dateRangeStatistics1);
        }
        //用户标签
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -92,6 +92,7 @@
    List<Map<String, Object>> usersDay1();
    List<Map<String, Object>> usersByQuery(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
    List<Map<String, Object>> usersByQuery1(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
    List<Map<String, Object>> getUserTagCount();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -197,6 +197,7 @@
    List<Map<String, Object>> usersDay1();
    List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto);
    List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto);
    List<Map<String, Object>> getUserTagCount();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -470,7 +470,7 @@
            TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
            if(null != vipDetail){
                Integer chargeNum = vipDetail.getChargeNum();
                if(0 > chargeNum){
                if(0 < chargeNum){
                    chargingOrder.setVipDiscount(discount);
                }
            }
@@ -582,7 +582,7 @@
                    Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", ""));
                    Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", ""));
                    String[] split = accountingStrategyDetailOrder.getEndTime().split(":");
                    if(sta || now >= start){
                    if(sta || (now >= start && now < end)){
                        sta = true;
                        
                        Calendar end_calendar = Calendar.getInstance();
@@ -604,16 +604,16 @@
                        //每秒需要支付的服务费金额
                        BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge());
                        //计算剩余金额能充多长时间的电
                        long times = rechargeAmount1.divide(s_server_amount, 0, RoundingMode.DOWN).longValue();
                        long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue();
                        if(times > m){
                            //充电时间跨度两个计费策略,需要继续对下一个策略进行计算
                            serviceCharge = s_server_amount.multiply(new BigDecimal(m));
                            discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
                            discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(1).subtract(discount))));
                            rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
                            nowTimeMillis = null;
                        }else{
                            serviceCharge = s_server_amount.multiply(new BigDecimal(times));
                            discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
                            discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(1).subtract(discount))));
                            break;
                        }
                    }
@@ -1258,6 +1258,7 @@
         BigDecimal electronicMoney = new BigDecimal("0");
         BigDecimal serviceMoney = new BigDecimal("0");
        for (ChargingOrderVO chargingOrderVO : list) {
            chargingOrderVO.setUid(chargingOrderVO.getId()+"");
            TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
            TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
            if (chargingOrderVO.getSiteId()!=null){
@@ -1271,38 +1272,24 @@
            }
            if (chargingOrderVO.getChargingCapacity()!=null){
                total = total.add(chargingOrderVO.getChargingCapacity());
                total = total.add(chargingOrderVO.getElectricity());
            }
            // 充电订单 明细记录
            List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
                    .eq("charging_order_id", chargingOrderVO.getId()));
            // 单个订单累计电费
            BigDecimal electronicMoney1 = new BigDecimal("0");
            // 单个订单累计服务费
            BigDecimal serviceMoney1 = new BigDecimal("0");
            UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
            if (data5!=null){
                chargingOrderVO.setChargingSecond(data5.getTime_remaining()*60L);
                long l = data5.getCumulative_charging_time() * 60L;
                chargingOrderVO.setChargingSecond(l);
                time+=l;
            }
            // 总收入
            if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){
                income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount()));
            }else{
                if (chargingOrderVO.getPaymentAmount()!=null){
                    income = income.add(chargingOrderVO.getPaymentAmount());
            electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
            serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
            income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence()));
            if (chargingOrderVO.getRefundAmount()!=null){
                income = income.subtract(chargingOrderVO.getRefundAmount());
                }
            }
            for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : chargingOrderId) {
                // 累计电费
                electronicMoney1 = electronicMoney1.add(tChargingOrderAccountingStrategy.getElectrovalence()
                        .multiply(tChargingOrderAccountingStrategy.getChargingCapacity()));
                electronicMoney = electronicMoney.add(electronicMoney1);
                // 累计服务费
                serviceMoney1 = serviceMoney1.add(tChargingOrderAccountingStrategy.getServiceCharge());
                serviceMoney = serviceMoney.add(serviceMoney1);
            }
            chargingOrderVO.setServiceCharge(serviceMoney1);
            chargingOrderVO.setElectrovalence(electronicMoney1);
            // 充电时段数
            int size = chargingOrderId.size();
            chargingOrderVO.setCount(size);
@@ -1409,7 +1396,36 @@
            startTime2 = split[1];
        }
        ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO();
        if (StringUtils.hasLength(dto.getPhone())){
            List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
            if(data!=null){
                if (!data.isEmpty()){
                    dto.setUserIds(data);
                }
            }else{
                dto.setUserIds(new ArrayList<Long>());
            }
            if (dto.getUserIds().isEmpty()){
                List<Long> carIds = dto.getUserIds();
                carIds.add(-1L);
                dto.setUserIds(carIds);
            }
        }
        if (StringUtils.hasLength(dto.getPhone())){
            List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData();
            if(data!=null){
                if (!data.isEmpty()){
                    dto.setCarIds(data);
                }
            }else{
                dto.setCarIds(new ArrayList<Long>());
            }
            if (dto.getCarIds().isEmpty()){
                List<Long> carIds = dto.getCarIds();
                carIds.add(-1L);
                dto.setCarIds(carIds);
            }
        }
        PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
        List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
        for (ChargingOrderListVO chargingOrderListVO : list) {
@@ -1439,7 +1455,7 @@
            // 获取开始SOC 结束soc
            if (chargingOrderListVO.getCode()!=null){
                List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
                if (!data6.isEmpty()){
            if (data6!=null && !data6.isEmpty()){
                    // 第一条数据soc为开始 最后一条数据soc为结束soc
                    chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString());
                    chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
@@ -1804,7 +1820,7 @@
                        invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
                        break;
                }
                if(null == invoke || Integer.valueOf(invoke.toString()) == 0){
                if(null == invoke || Double.valueOf(invoke.toString()) == 0){
                    continue;
                }
                BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
@@ -1860,7 +1876,7 @@
        BigDecimal discountAmount = BigDecimal.ZERO;
        if(null != chargingOrder.getVipDiscount()){
            //服务费折扣
            discountAmount = periodServicePrice_total.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
            discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
            
            TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
            if(null != appUser.getVipId()){
@@ -2068,6 +2084,10 @@
    public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) {
        return this.baseMapper.usersByQuery(statisticsQueryDto);
    }
    @Override
    public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) {
        return this.baseMapper.usersByQuery(statisticsQueryDto);
    }
    @Override
    public List<Map<String, Object>> getUserTagCount() {
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
@@ -63,6 +63,7 @@
                if(Objects.nonNull(tChargingOrder)){
                    item.setChargingOrder(tChargingOrder);
                    SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData();
                    if(Objects.nonNull(siteNameVO)){
                    item.setGunName(siteNameVO.getGunName());
                    item.setGunNumber(siteNameVO.getGunNumber());
                    item.setPileName(siteNameVO.getPileName());
@@ -70,6 +71,7 @@
                    item.setSiteName(siteNameVO.getSiteName());
                    item.setEndMode(tChargingOrder.getEndMode());
                }
                }
            }else if (item.getOrderType() == 2) {
                TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null);
                setGoodsInfo(item,tShoppingOrder);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -272,6 +272,10 @@
                    .map(TOrderInvoiceDetail::getOrderId).collect(Collectors.toList());
            // 将其全部转化为String
            tOrderInvoiceVO.setIds(collect.stream().map(String::valueOf).collect(Collectors.toList()));
            TAppUser appUser = appUserClient.getUserById(tOrderInvoiceVO.getAppUserId()).getData();
            if (appUser!=null){
                tOrderInvoiceVO.setUserPhone(appUser.getPhone());
            }
        }
        // 查询这个开票的订单ids
@@ -293,11 +297,6 @@
                e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
                e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
                e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
                if (e.getBillingUserId()!=null){
                    e.setUserPhone(finalTAppUsers.stream().filter(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone());
                }
                TAppUser appUser = appUserClient.getUserById(e.getAppUserId()).getData();
                e.setUserPhone(appUser.getPhone());
            });
        }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -44,7 +44,12 @@
        System.err.println(string);
    }
    // 每月2号凌晨12点执行的定时任务
    @Scheduled(cron = "0 0 0 2 * ?")
//    @Scheduled(cron = "0 0 0 2 * ?")
    // 每天凌晨12点执行的定时任务
    @Scheduled(cron = "0 0 12 2 * ?")
    // 每30秒执行一次的定时任务
    @Scheduled(cron = "0/30 * * * * ?")
    public void taskMonth() {
        try {
            // 获取上个月的开始和结束日期
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -326,7 +326,7 @@
            FROM
            t_charging_order
            <where>
                del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
                del_flag = 0 and recharge_payment_status = 2
                <if test="sixBefore != null">
                    AND create_time &gt;= #{sixBefore}
                </if>
@@ -349,7 +349,7 @@
        FROM
            t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
            del_flag = 0 and recharge_payment_status = 2
            <if test="siteIds != null and siteIds.size() > 0">
                AND site_id IN
                <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -368,7 +368,7 @@
    <select id="countAll" resultType="java.util.Map">
        select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,sum(commission_amount) as commission_amount,sum(sharing_amount) as sharing_amount
        from t_charging_order
        where create_time &gt;= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
        where create_time &gt;= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2
    </select>
    <select id="getSumByType" resultType="java.util.Map">
        SELECT
@@ -399,13 +399,13 @@
        FROM
            t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and DATE(create_time) = CURDATE()
            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
            del_flag = 0 and recharge_payment_status = 2  and DATE(create_time) = CURDATE()
                AND id IN
                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
                    #{chargingOrderId}
                </foreach>
            </if>
        </where>
        GROUP BY
            time
@@ -423,13 +423,13 @@
        FROM
        t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
            del_flag = 0 and recharge_payment_status = 2  and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
                AND id IN
                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
                    #{chargingOrderId}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -447,13 +447,13 @@
        FROM
        t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and MONTH(create_time) = MONTH(NOW())  AND YEAR(create_time) = YEAR(NOW())
            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
            del_flag = 0 and recharge_payment_status = 2  and MONTH(create_time) = MONTH(NOW())  AND YEAR(create_time) = YEAR(NOW())
                AND id IN
                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
                    #{chargingOrderId}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -472,13 +472,13 @@
        FROM
        t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and YEAR(create_time) = YEAR(NOW())
            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
            del_flag = 0 and recharge_payment_status = 2  and YEAR(create_time) = YEAR(NOW())
                AND id IN
                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
                    #{chargingOrderId}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -496,13 +496,13 @@
        FROM
        t_charging_order
        <where>
            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
            del_flag = 0 and recharge_payment_status = 2
                AND id IN
                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
                    #{chargingOrderId}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -520,7 +520,6 @@
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
          AND ISNULL(refund_status)
          AND DATE(create_time) = CURDATE()
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
@@ -542,7 +541,6 @@
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
          AND ISNULL(refund_status)
          AND DATE(create_time) = CURDATE() - INTERVAL 1 DAY
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
@@ -570,7 +568,6 @@
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
          AND ISNULL(refund_status)
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -631,6 +628,45 @@
        GROUP BY
            time
    </select>
    <select id="usersByQuery1" resultType="java.util.Map">
        SELECT
        'today' AS data_type,
        '1' as type,
        DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
        count(DISTINCT  app_user_id) AS counts
        FROM
        t_charging_order
        WHERE
        del_flag = 0
        <if test="statisticsQueryDto.dayType ==1 ">
            AND DATE(create_time) = CURDATE()
        </if>
        <if test="statisticsQueryDto.dayType ==2 ">
            AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType ==3 ">
            AND MONTH(create_time) = MONTH(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType ==4">
            AND YEAR(create_time) = YEAR(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType ==5">
            <if test="statisticsQueryDto.startTime != null">
                AND create_time >= #{statisticsQueryDto.startTime}
            </if>
            <if test="statisticsQueryDto.endTime != null">
                AND create_time &lt;= #{statisticsQueryDto.endTime}
            </if>
        </if>
        GROUP BY
        time
    </select>
    <select id="usersByQuery" resultType="java.util.Map">
        SELECT
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
@@ -62,7 +62,7 @@
                AND toi.name LIKE concat('%',#{query.name},'%')
            </if>
            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
                AND toi.billing_time BETWEEN #{query.startTime} AND #{query.endTime}
                AND toi.create_time BETWEEN #{query.startTime} AND #{query.endTime}
            </if>
            <if test="query.userIds != null and query.userIds.size()>0">
                AND toi.billing_user_id IN