From de3858253f29abe18c76dd7dcdaa7db4c1fd372e Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 14 二月 2025 17:15:10 +0800
Subject: [PATCH] 开发新增加功能

---
 ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java | 3124 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 1,567 insertions(+), 1,557 deletions(-)

diff --git a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java
index 996c78a..81da78f 100644
--- a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java
+++ b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java
@@ -41,1574 +41,1584 @@
 @Controller
 @RequestMapping("/subsidy")
 public class TSubsidyController extends BaseController {
-
-    private String PREFIX = "/system/subsidy/";
-
-    @RequestMapping("/grant")
-    public String index( Model model) {
-        return PREFIX + "grant.html";
-    }
-    @RequestMapping("/use")
-    public String watter( Model model) {
-        return PREFIX + "use.html";
-    }
-    @Autowired
-    private IIncomeService tIncomeService;
-    @Autowired
-    private ITOrderPrivateCarService orderPrivateCarService;
-    @Autowired
-    private ITOrderLogisticsService orderLogisticsService;
-    @Autowired
-    private IIncomeService incomeService;
-    @Autowired
-    private ISettlementRecordService settlementRecordService;
-    @Autowired
-    private IBalanceUsageRecordService balanceUsageRecordService;
-    @Autowired
-    private ISettlementDetailService settlementDetailService;
-    @Autowired
-    private ITDriverService driverService;
-    @Autowired
-    private ITPubTransactionDetailsService pubTransactionDetailsService;
-    @Autowired
-    private ITPubWithdrawalService pubWithdrawalService;
-    @Autowired
-    private IPaymentRecordService paymentRecordService;
-    @Autowired
-    private ITUserService appUserService;
-    @Autowired
-    private IUserCouponRecordService userCouponRecordService;
-    @Autowired
-    private IUserRedPacketRecordService userRedPacketRecordService;
-    @Autowired
-    private IDriverActivityHistoryService driverActivityHistoryService;
-    @Autowired
-    private IUserActivityRedenvelopeService userActivityRedenvelopeService;
-    @Autowired
-    private IUserActivityService userActivityService;
-    @Autowired
-    private ISysCouponActivityService sysCouponActivityService;
-    @Autowired
-    private ISysCouponRecordService sysCouponRecordService;
-    @Autowired
-    private IUserActivityDiscount1Service userActivityDiscount1Service;
-
-    public static void main(String[] args) {
-        String temp = "[{\"money\":14.46,\"id\":91},{\"money\":1,\"id\":90}]";
-        JSONArray objects = JSONArray.parseArray(temp);
-        BigDecimal temp1 = new BigDecimal(BigInteger.ZERO);
-        for (int i = 0; i < objects.size(); i++) {
-            String string = objects.getJSONObject(i).getString("money");
-            temp1 = temp1.add(new BigDecimal(string));
-        }
-        System.err.println(temp1);
-    }
-    /**
-     * 使用补贴统计
-     */
-    @RequestMapping(value = "/use/list")
-    @ResponseBody
-    public Object list1(Integer time,String insertTime,Integer type) {
-        if (time == null){
-            time = 1;
-        }
-        String beginTime = null;
-        String endTime = null;
-        LocalDateTime start =null;
-        LocalDateTime end =null;
-        // 获取当前日期
-        LocalDate today = LocalDate.now();
-        if (ToolUtil.isNotEmpty(insertTime)){
-            beginTime = insertTime.split(" - ")[0];
-            endTime = insertTime.split(" - ")[1];
-            LocalDate s = LocalDate.parse(beginTime);
-            LocalDate e = LocalDate.parse(endTime);
-            start = s.atStartOfDay();
-            end = e.atTime(LocalTime.MAX);
-        }else if (time!=null) {
-            switch (time) {
-                case 1:
-                    // 获取当天的 00:00:00 和 23:59:59
-                    LocalDateTime startOfDay = today.atStartOfDay();
-                    LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
-                    start = startOfDay;
-                    end = endOfDay;
-                    break;
-                case 2:
-                    // 获取本周第一天的日期和时间
-                    LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-                    LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
-
-                    // 获取本周最后一天的日期和时间
-                    LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
-                    LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
-                    start = startOfWeek;
-                    end = endOfWeek;
-                    break;
-                case 3:
-                    LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
-                    LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
-
-                    // 获取本月最后一天的日期和时间
-                    LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
-                    LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
-                    start = startOfMonth;
-                    end = endOfMonth;
-                    break;
-                case 4:
-                    // 获取本年第一天的日期和时间
-                    LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
-                    LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
-                    // 获取本年最后一天的日期和时间
-                    LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
-                    LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
-                    start = startOfYear;
-                    end = endOfYear;
-                    break;
-            }
-        }
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        // 列表res
-        List<GrantVO> res = new ArrayList<>();
-        // 专车订单
-        List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
-        // 小件物流
-        List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
-        // 优惠券领取记录
-        List<TOrderPrivateCar> userCouponRecords = new ArrayList<>();
-        List<TOrderLogistics> userCouponRecords1 = new ArrayList<>();
-        // 红包领取记录
-        List<TOrderPrivateCar> userRedPacketRecords = new ArrayList<>();
-        List<TOrderLogistics> userRedPacketRecords1 = new ArrayList<>();
-
-        // 司机消费
-        List<BalanceUsageRecord> balanceUsageRecords = new ArrayList<>();
-        // 司机提现
-        List<TPubWithdrawal> driverWithdrawal = new ArrayList<>();
-
-        Wrapper<TPubWithdrawal> driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                ;
-        // 专车wrapper
-        Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        // 小件物流wrapper
-        Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 已使用优惠券记录wrapper
-        Wrapper<TOrderPrivateCar> between2 = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        Wrapper<TOrderLogistics> between22 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 已使用红包记录wrapper
-        Wrapper<TOrderPrivateCar> between3 = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        Wrapper<TOrderLogistics> between33 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 司机已消费金额
-        Wrapper<BalanceUsageRecord> between4 = new EntityWrapper<BalanceUsageRecord>()
-                ;
-        if (time == 5 && !StringUtils.hasLength(insertTime)){
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    ;
-
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    ;
-
-            // 已使用优惠券记录wrapper
-           between2 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                 ;
-
-            between22 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                 ;
-
-            // 已使用红包记录wrapper
-            between3 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-              ;
-
-            between33 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-                 ;
-
-            // 司机已消费金额
-            between4 = new EntityWrapper<BalanceUsageRecord>()
-                    .eq("type",1)
-                    .ne("purpose", 6)
-          ;
-
-            // 司机提现
-            driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                    .eq("state", 2)
-                    .eq("type",1)
-                    .eq("userType", 2)
-                    ;
-
-            ;
-        }else{
-            driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                    .eq("state", 2)
-                    .eq("type",1)
-                    .eq("userType", 2)
-                    .between("insertTime", start, end);
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end);
-            // 小件物流wrapper
-             between1 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end);
-            // 已使用优惠券记录wrapper
-            between2 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                    .between("insertTime", start, end);
-            between22 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                    .between("insertTime", start, end);
-            // 已使用红包记录wrapper
-            between3 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-                    .between("insertTime", start, end);
-            between33 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-                    .between("insertTime", start, end);
-            // 司机已消费金额
-            between4 = new EntityWrapper<BalanceUsageRecord>()
-                    .ne("purpose", 6)
-                    .eq("type",1)
-                    .between("createTime", start, end);
-
-
-        }
-        // 司机提现wrapper
-        if (type!=null){
-            switch (type){
-                case 1:
-                    // 红包
-                    userRedPacketRecords = orderPrivateCarService.selectList(between3);
-                    userRedPacketRecords1 = orderLogisticsService.selectList(between33);
-                    break;
-                case 2:
-                    userCouponRecords = orderPrivateCarService.selectList(between2);
-                    userCouponRecords1 = orderLogisticsService.selectList(between22);
-                    // 优惠券
-                    break;
-                case 3:
-                    // 司机消费记录
-                    balanceUsageRecords = balanceUsageRecordService.selectList(between4);
-                    driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
-                    break;
-                case 4:
-                    // 专车订单
-                    tOrderPrivateCars = orderPrivateCarService.selectList(between);
-                    // 小件物流订单
-                    tOrderLogistics = orderLogisticsService.selectList(between1);
-                    break;
-            }
-        }else{
-            // 红包
-            userRedPacketRecords = orderPrivateCarService.selectList(between3);
-            userRedPacketRecords1 = orderLogisticsService.selectList(between33);
-            // 优惠券
-            userCouponRecords = orderPrivateCarService.selectList(between2);
-            userCouponRecords1 = orderLogisticsService.selectList(between22);
-            // 专车订单
-            tOrderPrivateCars = orderPrivateCarService.selectList(between);
-            // 小件物流订单
-            tOrderLogistics = orderLogisticsService.selectList(between1);
-            // 消费
-            balanceUsageRecords = balanceUsageRecordService.selectList(between4);
-            // 提现
-            driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
-        }
-
-        // 已发放补贴总额
-        BigDecimal total = new BigDecimal("0");
-        // 已使用折扣总额(用户端)
-        BigDecimal discount = new BigDecimal("0");
-        // 已使用红包总额(用户端)
-        BigDecimal redPackage = new BigDecimal("0");
-        // 已使用优惠券总额(用户端)
-        BigDecimal coupon = new BigDecimal("0");
-        // 已使用司机奖励总额(司机端)
-        BigDecimal driver = new BigDecimal("0");
-        // 司机已消费
-        BigDecimal driverConsume = new BigDecimal("0");
-        // 司机已提现
-        BigDecimal driverWithdrawal1 = new BigDecimal("0");
-        // 一次性查询所有用户信息
-        Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
-                .stream()
-                .collect(Collectors.toMap(TUser::getId, user -> user));
-        Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
-                .stream()
-                .collect(Collectors.toMap(TDriver::getId, user -> user));
-
-        // 查询已使用折扣总额
-        for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser != null) {
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+tOrderPrivateCar.getOrderNum());
-            res.add(grantVO);
-        }
-        for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser != null) {
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+tOrderPrivateCar.getOrderNum());
-            res.add(grantVO);
-        }
-        // 查询已使用红包总额
-        for (TOrderPrivateCar userRedPacketRecord : userRedPacketRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            if (userRedPacketRecord.getRedPacketMoney()==null){
-                continue;
-            }
-            if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0"))==0){
-                continue;
-            }
-            grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser != null) {
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userRedPacketRecord.getOrderNum());
-            res.add(grantVO);
-            redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
-        }
-        for (TOrderLogistics userRedPacketRecord : userRedPacketRecords1) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            if (userRedPacketRecord.getRedPacketMoney()==null){
-                continue;
-            }
-            if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0"))==0){
-                continue;
-            }
-            grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser != null) {
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userRedPacketRecord.getOrderNum());
-            res.add(grantVO);
-            redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
-        }
-        // 查询已领取优惠券总额
-        for (TOrderPrivateCar userCouponRecord : userCouponRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser != null) {
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userCouponRecord.getOrderNum());
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
-            res.add(grantVO);
-        }
-        for (TOrderLogistics userCouponRecord : userCouponRecords1) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userCouponRecord.getOrderNum());
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
-            res.add(grantVO);
-        }
-        // 司机消费奖励
-        for (BalanceUsageRecord balanceUsageRecord : balanceUsageRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(balanceUsageRecord.getCreateTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(balanceUsageRecord.getMoney().toString());
-            TDriver tUser = driverMap.get(balanceUsageRecord.getDriverId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getFirstName()+tUser.getLastName());
-            }
-            switch (balanceUsageRecord.getPurpose()){
-                case 1:
-                    //打车支付
-                    grantVO.setRemark("余额支付"+"【打车支付】");
-                    break;
-                case 2:
-                    grantVO.setRemark("余额支付"+"【包裹支付】");
-                    // 包裹支付
-                    break;
-                case 3:
-                    grantVO.setRemark("余额支付"+"【日结算】");
-                    // 日结算
-                    break;
-                case 4:
-                    grantVO.setRemark("余额支付"+"【周结算】");
-                    // 周结算
-                    break;
-                case 5:
-                    grantVO.setRemark("余额支付"+"【月结算】");
-                    // 月结算
-                    break;
-            }
-            driverConsume = driverConsume.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-        // 司机提现
-        for (TPubWithdrawal balanceUsageRecord : driverWithdrawal) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(balanceUsageRecord.getInsertTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(balanceUsageRecord.getMoney().toString());
-
-            TDriver tUser = driverMap.get(balanceUsageRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getFirstName()+tUser.getLastName());
-            }
-            grantVO.setRemark("司机提现");
-            driverWithdrawal1 = driverWithdrawal1.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-
-
-        // 总额
-        total = total.add(redPackage).add(coupon).add(discount).add(driverConsume).add(driverWithdrawal1);
-        // 已使用司机奖励合计
-        driver = driverConsume.add(driverWithdrawal1);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        // 对集合进行排序
-        res.sort((a, b) -> {
-            LocalDateTime timeA = LocalDateTime.parse(a.getInsertTime(), formatter);
-            LocalDateTime timeB = LocalDateTime.parse(b.getInsertTime(), formatter);
-            return timeA.compareTo(timeB);
-        });
-        return res;
-    }
-
-    @RequestMapping(value = "/use/getCount")
-    @ResponseBody
-    public Object getCount1(Integer time,String insertTime,Integer type) {
-        if (time == null){
-            time = 1;
-        }
-        String beginTime = null;
-        String endTime = null;
-        LocalDateTime start =null;
-        LocalDateTime end =null;
-        // 获取当前日期
-        LocalDate today = LocalDate.now();
-        if (ToolUtil.isNotEmpty(insertTime)){
-            beginTime = insertTime.split(" - ")[0];
-            endTime = insertTime.split(" - ")[1];
-            LocalDate s = LocalDate.parse(beginTime);
-            LocalDate e = LocalDate.parse(endTime);
-            start = s.atStartOfDay();
-            end = e.atTime(LocalTime.MAX);
-        }else if (time!=null) {
-            switch (time) {
-                case 1:
-                    // 获取当天的 00:00:00 和 23:59:59
-                    LocalDateTime startOfDay = today.atStartOfDay();
-                    LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
-                    start = startOfDay;
-                    end = endOfDay;
-                    break;
-                case 2:
-                    // 获取本周第一天的日期和时间
-                    LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-                    LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
-
-                    // 获取本周最后一天的日期和时间
-                    LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
-                    LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
-                    start = startOfWeek;
-                    end = endOfWeek;
-                    break;
-                case 3:
-                    LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
-                    LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
-
-                    // 获取本月最后一天的日期和时间
-                    LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
-                    LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
-                    start = startOfMonth;
-                    end = endOfMonth;
-                    break;
-                case 4:
-                    // 获取本年第一天的日期和时间
-                    LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
-                    LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
-                    // 获取本年最后一天的日期和时间
-                    LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
-                    LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
-                    start = startOfYear;
-                    end = endOfYear;
-                    break;
-            }
-        }
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        // 列表res
-        List<GrantVO> res = new ArrayList<>();
-        // 专车订单
-        List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
-        // 小件物流
-        List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
-        // 优惠券领取记录
-        List<TOrderPrivateCar> userCouponRecords = new ArrayList<>();
-        List<TOrderLogistics> userCouponRecords1 = new ArrayList<>();
-        // 红包领取记录
-        List<TOrderPrivateCar> userRedPacketRecords = new ArrayList<>();
-        List<TOrderLogistics> userRedPacketRecords1 = new ArrayList<>();
-
-        // 司机消费
-        List<BalanceUsageRecord> balanceUsageRecords = new ArrayList<>();
-        // 司机提现
-        List<TPubWithdrawal> driverWithdrawal = new ArrayList<>();
-
-        Wrapper<TPubWithdrawal> driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                ;
-        // 专车wrapper
-        Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        // 小件物流wrapper
-        Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 已使用优惠券记录wrapper
-        Wrapper<TOrderPrivateCar> between2 = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        Wrapper<TOrderLogistics> between22 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 已使用红包记录wrapper
-        Wrapper<TOrderPrivateCar> between3 = new EntityWrapper<TOrderPrivateCar>()
-                ;
-        Wrapper<TOrderLogistics> between33 = new EntityWrapper<TOrderLogistics>()
-                ;
-        // 司机已消费金额
-        Wrapper<BalanceUsageRecord> between4 = new EntityWrapper<BalanceUsageRecord>()
-                ;
-        if (time == 5 && !StringUtils.hasLength(insertTime)){
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
+	
+	private String PREFIX = "/system/subsidy/";
+	
+	@RequestMapping("/grant")
+	public String index(Model model) {
+		return PREFIX + "grant.html";
+	}
+	
+	@RequestMapping("/use")
+	public String watter(Model model) {
+		return PREFIX + "use.html";
+	}
+	
+	@Autowired
+	private IIncomeService tIncomeService;
+	@Autowired
+	private ITOrderPrivateCarService orderPrivateCarService;
+	@Autowired
+	private ITOrderLogisticsService orderLogisticsService;
+	@Autowired
+	private IIncomeService incomeService;
+	@Autowired
+	private ISettlementRecordService settlementRecordService;
+	@Autowired
+	private IBalanceUsageRecordService balanceUsageRecordService;
+	@Autowired
+	private ISettlementDetailService settlementDetailService;
+	@Autowired
+	private ITDriverService driverService;
+	@Autowired
+	private ITPubTransactionDetailsService pubTransactionDetailsService;
+	@Autowired
+	private ITPubWithdrawalService pubWithdrawalService;
+	@Autowired
+	private IPaymentRecordService paymentRecordService;
+	@Autowired
+	private ITUserService appUserService;
+	@Autowired
+	private IUserCouponRecordService userCouponRecordService;
+	@Autowired
+	private IUserRedPacketRecordService userRedPacketRecordService;
+	@Autowired
+	private IDriverActivityHistoryService driverActivityHistoryService;
+	@Autowired
+	private IUserActivityRedenvelopeService userActivityRedenvelopeService;
+	@Autowired
+	private IUserActivityService userActivityService;
+	@Autowired
+	private ISysCouponActivityService sysCouponActivityService;
+	@Autowired
+	private ISysCouponRecordService sysCouponRecordService;
+	@Autowired
+	private IUserActivityDiscount1Service userActivityDiscount1Service;
+	
+	public static void main(String[] args) {
+		String temp = "[{\"money\":14.46,\"id\":91},{\"money\":1,\"id\":90}]";
+		JSONArray objects = JSONArray.parseArray(temp);
+		BigDecimal temp1 = new BigDecimal(BigInteger.ZERO);
+		for (int i = 0; i < objects.size(); i++) {
+			String string = objects.getJSONObject(i).getString("money");
+			temp1 = temp1.add(new BigDecimal(string));
+		}
+		System.err.println(temp1);
+	}
+	
+	/**
+	 * 使用补贴统计
+	 */
+	@RequestMapping(value = "/use/list")
+	@ResponseBody
+	public Object list1(Integer time, String insertTime, Integer type) {
+		if (time == null) {
+			time = 1;
+		}
+		String beginTime = null;
+		String endTime = null;
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+		// 获取当前日期
+		LocalDate today = LocalDate.now();
+		if (ToolUtil.isNotEmpty(insertTime)) {
+			beginTime = insertTime.split(" - ")[0];
+			endTime = insertTime.split(" - ")[1];
+			LocalDate s = LocalDate.parse(beginTime);
+			LocalDate e = LocalDate.parse(endTime);
+			start = s.atStartOfDay();
+			end = e.atTime(LocalTime.MAX);
+		} else if (time != null) {
+			switch (time) {
+				case 1:
+					// 获取当天的 00:00:00 和 23:59:59
+					LocalDateTime startOfDay = today.atStartOfDay();
+					LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
+					start = startOfDay;
+					end = endOfDay;
+					break;
+				case 2:
+					// 获取本周第一天的日期和时间
+					LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+					LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
+					
+					// 获取本周最后一天的日期和时间
+					LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+					LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
+					start = startOfWeek;
+					end = endOfWeek;
+					break;
+				case 3:
+					LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+					LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
+					
+					// 获取本月最后一天的日期和时间
+					LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+					LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
+					start = startOfMonth;
+					end = endOfMonth;
+					break;
+				case 4:
+					// 获取本年第一天的日期和时间
+					LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
+					LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
+					// 获取本年最后一天的日期和时间
+					LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
+					LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
+					start = startOfYear;
+					end = endOfYear;
+					break;
+			}
+		}
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		// 列表res
+		List<GrantVO> res = new ArrayList<>();
+		// 专车订单
+		List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
+		// 小件物流
+		List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
+		// 优惠券领取记录
+		List<TOrderPrivateCar> userCouponRecords = new ArrayList<>();
+		List<TOrderLogistics> userCouponRecords1 = new ArrayList<>();
+		// 红包领取记录
+		List<TOrderPrivateCar> userRedPacketRecords = new ArrayList<>();
+		List<TOrderLogistics> userRedPacketRecords1 = new ArrayList<>();
+		
+		// 司机消费
+		List<BalanceUsageRecord> balanceUsageRecords = new ArrayList<>();
+		// 司机提现
+		List<TPubWithdrawal> driverWithdrawal = new ArrayList<>();
+		
+		Wrapper<TPubWithdrawal> driverWrapper = new EntityWrapper<TPubWithdrawal>();
+		// 专车wrapper
+		Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>();
+		// 小件物流wrapper
+		Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>();
+		// 已使用优惠券记录wrapper
+		Wrapper<TOrderPrivateCar> between2 = new EntityWrapper<TOrderPrivateCar>();
+		Wrapper<TOrderLogistics> between22 = new EntityWrapper<TOrderLogistics>();
+		// 已使用红包记录wrapper
+		Wrapper<TOrderPrivateCar> between3 = new EntityWrapper<TOrderPrivateCar>();
+		Wrapper<TOrderLogistics> between33 = new EntityWrapper<TOrderLogistics>();
+		// 司机已消费金额
+		Wrapper<BalanceUsageRecord> between4 = new EntityWrapper<BalanceUsageRecord>();
+		if (time == 5 && !StringUtils.hasLength(insertTime)) {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+			;
+			
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+			;
+			
+			// 已使用优惠券记录wrapper
+			between2 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+			;
+			
+			between22 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+			;
+			
+			// 已使用红包记录wrapper
+			between3 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+			;
+			
+			between33 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+			;
+			
+			// 司机已消费金额
+			between4 = new EntityWrapper<BalanceUsageRecord>()
+					.eq("type", 1)
+					.ne("purpose", 6)
+			;
+			
+			// 司机提现
+			driverWrapper = new EntityWrapper<TPubWithdrawal>()
+					.eq("state", 2)
+					.eq("type", 1)
+					.eq("userType", 2)
+			;
+			
+			;
+		} else {
+			driverWrapper = new EntityWrapper<TPubWithdrawal>()
+					.eq("state", 2)
+					.eq("type", 1)
+					.eq("userType", 2)
+					.between("insertTime", start, end);
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end);
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end);
+			// 已使用优惠券记录wrapper
+			between2 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+					.between("insertTime", start, end);
+			between22 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+					.between("insertTime", start, end);
+			// 已使用红包记录wrapper
+			between3 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+					.between("insertTime", start, end);
+			between33 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+					.between("insertTime", start, end);
+			// 司机已消费金额
+			between4 = new EntityWrapper<BalanceUsageRecord>()
+					.ne("purpose", 6)
+					.eq("type", 1)
+					.between("createTime", start, end);
+			
+			
+		}
+		// 司机提现wrapper
+		if (type != null) {
+			switch (type) {
+				case 1:
+					// 红包
+					userRedPacketRecords = orderPrivateCarService.selectList(between3);
+					userRedPacketRecords1 = orderLogisticsService.selectList(between33);
+					break;
+				case 2:
+					userCouponRecords = orderPrivateCarService.selectList(between2);
+					userCouponRecords1 = orderLogisticsService.selectList(between22);
+					// 优惠券
+					break;
+				case 3:
+					// 司机消费记录
+					balanceUsageRecords = balanceUsageRecordService.selectList(between4);
+					driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
+					break;
+				case 4:
+					// 专车订单
+					tOrderPrivateCars = orderPrivateCarService.selectList(between);
+					// 小件物流订单
+					tOrderLogistics = orderLogisticsService.selectList(between1);
+					break;
+			}
+		} else {
+			// 红包
+			userRedPacketRecords = orderPrivateCarService.selectList(between3);
+			userRedPacketRecords1 = orderLogisticsService.selectList(between33);
+			// 优惠券
+			userCouponRecords = orderPrivateCarService.selectList(between2);
+			userCouponRecords1 = orderLogisticsService.selectList(between22);
+			// 专车订单
+			tOrderPrivateCars = orderPrivateCarService.selectList(between);
+			// 小件物流订单
+			tOrderLogistics = orderLogisticsService.selectList(between1);
+			// 消费
+			balanceUsageRecords = balanceUsageRecordService.selectList(between4);
+			// 提现
+			driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
+		}
+		
+		// 已发放补贴总额
+		BigDecimal total = new BigDecimal("0");
+		// 已使用折扣总额(用户端)
+		BigDecimal discount = new BigDecimal("0");
+		// 已使用红包总额(用户端)
+		BigDecimal redPackage = new BigDecimal("0");
+		// 已使用优惠券总额(用户端)
+		BigDecimal coupon = new BigDecimal("0");
+		// 已使用司机奖励总额(司机端)
+		BigDecimal driver = new BigDecimal("0");
+		// 司机已消费
+		BigDecimal driverConsume = new BigDecimal("0");
+		// 司机已提现
+		BigDecimal driverWithdrawal1 = new BigDecimal("0");
+		// 一次性查询所有用户信息
+		Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
+				.stream()
+				.collect(Collectors.toMap(TUser::getId, user -> user));
+		Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
+				.stream()
+				.collect(Collectors.toMap(TDriver::getId, user -> user));
+		
+		// 查询已使用折扣总额
+		for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + tOrderPrivateCar.getOrderNum());
+			res.add(grantVO);
+		}
+		for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + tOrderPrivateCar.getOrderNum());
+			res.add(grantVO);
+		}
+		// 查询已使用红包总额
+		for (TOrderPrivateCar userRedPacketRecord : userRedPacketRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			if (userRedPacketRecord.getRedPacketMoney() == null) {
+				continue;
+			}
+			if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0")) == 0) {
+				continue;
+			}
+			grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userRedPacketRecord.getOrderNum());
+			res.add(grantVO);
+			redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
+		}
+		for (TOrderLogistics userRedPacketRecord : userRedPacketRecords1) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			if (userRedPacketRecord.getRedPacketMoney() == null) {
+				continue;
+			}
+			if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0")) == 0) {
+				continue;
+			}
+			grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userRedPacketRecord.getOrderNum());
+			res.add(grantVO);
+			redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
+		}
+		// 查询已领取优惠券总额
+		for (TOrderPrivateCar userCouponRecord : userCouponRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+			UserCouponRecord userCouponRecord1 = userCouponRecordService.selectById(userCouponRecord.getCouponId());
+			switch (userCouponRecord1.getCouponUseType()){
+				case 0:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "通用 抵扣券" : "通用 满减券");
+					break;
+				case 1:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "打车 抵扣券" : "打车 满减券");
+					break;
+				case 4:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "包裹 抵扣券" : "包裹 满减券");
+					break;
+			}
+			
+			grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userCouponRecord.getOrderNum());
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
+			res.add(grantVO);
+		}
+		for (TOrderLogistics userCouponRecord : userCouponRecords1) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+			
+			UserCouponRecord userCouponRecord1 = userCouponRecordService.selectById(userCouponRecord.getCouponId());
+			switch (userCouponRecord1.getCouponUseType()){
+				case 0:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "通用 抵扣券" : "通用 满减券");
+					break;
+				case 1:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "打车 抵扣券" : "打车 满减券");
+					break;
+				case 4:
+					grantVO.setType(userCouponRecord1.getCouponType() == 1 ? "包裹 抵扣券" : "包裹 满减券");
+					break;
+			}
+			
+			grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userCouponRecord.getOrderNum());
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
+			res.add(grantVO);
+		}
+		// 司机消费奖励
+		for (BalanceUsageRecord balanceUsageRecord : balanceUsageRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(balanceUsageRecord.getCreateTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(balanceUsageRecord.getMoney().toString());
+			TDriver tUser = driverMap.get(balanceUsageRecord.getDriverId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getFirstName() + tUser.getLastName());
+			}
+			switch (balanceUsageRecord.getPurpose()) {
+				case 1:
+					//打车支付
+					grantVO.setRemark("余额支付" + "【打车支付】");
+					break;
+				case 2:
+					grantVO.setRemark("余额支付" + "【包裹支付】");
+					// 包裹支付
+					break;
+				case 3:
+					grantVO.setRemark("余额支付" + "【日结算】");
+					// 日结算
+					break;
+				case 4:
+					grantVO.setRemark("余额支付" + "【周结算】");
+					// 周结算
+					break;
+				case 5:
+					grantVO.setRemark("余额支付" + "【月结算】");
+					// 月结算
+					break;
+			}
+			driverConsume = driverConsume.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		// 司机提现
+		for (TPubWithdrawal balanceUsageRecord : driverWithdrawal) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(balanceUsageRecord.getInsertTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(balanceUsageRecord.getMoney().toString());
+			
+			TDriver tUser = driverMap.get(balanceUsageRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getFirstName() + tUser.getLastName());
+			}
+			grantVO.setRemark("司机提现");
+			driverWithdrawal1 = driverWithdrawal1.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		
+		
+		// 总额
+		total = total.add(redPackage).add(coupon).add(discount).add(driverConsume).add(driverWithdrawal1);
+		// 已使用司机奖励合计
+		driver = driverConsume.add(driverWithdrawal1);
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		// 对集合进行排序
+		res.sort((a, b) -> {
+			LocalDateTime timeA = LocalDateTime.parse(a.getInsertTime(), formatter);
+			LocalDateTime timeB = LocalDateTime.parse(b.getInsertTime(), formatter);
+			return timeA.compareTo(timeB);
+		});
+		return res;
+	}
+	
+	@RequestMapping(value = "/use/getCount")
+	@ResponseBody
+	public Object getCount1(Integer time, String insertTime, Integer type) {
+		if (time == null) {
+			time = 1;
+		}
+		String beginTime = null;
+		String endTime = null;
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+		// 获取当前日期
+		LocalDate today = LocalDate.now();
+		if (ToolUtil.isNotEmpty(insertTime)) {
+			beginTime = insertTime.split(" - ")[0];
+			endTime = insertTime.split(" - ")[1];
+			LocalDate s = LocalDate.parse(beginTime);
+			LocalDate e = LocalDate.parse(endTime);
+			start = s.atStartOfDay();
+			end = e.atTime(LocalTime.MAX);
+		} else if (time != null) {
+			switch (time) {
+				case 1:
+					// 获取当天的 00:00:00 和 23:59:59
+					LocalDateTime startOfDay = today.atStartOfDay();
+					LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
+					start = startOfDay;
+					end = endOfDay;
+					break;
+				case 2:
+					// 获取本周第一天的日期和时间
+					LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+					LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
+					
+					// 获取本周最后一天的日期和时间
+					LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+					LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
+					start = startOfWeek;
+					end = endOfWeek;
+					break;
+				case 3:
+					LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+					LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
+					
+					// 获取本月最后一天的日期和时间
+					LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+					LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
+					start = startOfMonth;
+					end = endOfMonth;
+					break;
+				case 4:
+					// 获取本年第一天的日期和时间
+					LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
+					LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
+					// 获取本年最后一天的日期和时间
+					LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
+					LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
+					start = startOfYear;
+					end = endOfYear;
+					break;
+			}
+		}
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		// 列表res
+		List<GrantVO> res = new ArrayList<>();
+		// 专车订单
+		List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
+		// 小件物流
+		List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
+		// 优惠券领取记录
+		List<TOrderPrivateCar> userCouponRecords = new ArrayList<>();
+		List<TOrderLogistics> userCouponRecords1 = new ArrayList<>();
+		// 红包领取记录
+		List<TOrderPrivateCar> userRedPacketRecords = new ArrayList<>();
+		List<TOrderLogistics> userRedPacketRecords1 = new ArrayList<>();
+		
+		// 司机消费
+		List<BalanceUsageRecord> balanceUsageRecords = new ArrayList<>();
+		// 司机提现
+		List<TPubWithdrawal> driverWithdrawal = new ArrayList<>();
+		
+		Wrapper<TPubWithdrawal> driverWrapper = new EntityWrapper<TPubWithdrawal>();
+		// 专车wrapper
+		Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>();
+		// 小件物流wrapper
+		Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>();
+		// 已使用优惠券记录wrapper
+		Wrapper<TOrderPrivateCar> between2 = new EntityWrapper<TOrderPrivateCar>();
+		Wrapper<TOrderLogistics> between22 = new EntityWrapper<TOrderLogistics>();
+		// 已使用红包记录wrapper
+		Wrapper<TOrderPrivateCar> between3 = new EntityWrapper<TOrderPrivateCar>();
+		Wrapper<TOrderLogistics> between33 = new EntityWrapper<TOrderLogistics>();
+		// 司机已消费金额
+		Wrapper<BalanceUsageRecord> between4 = new EntityWrapper<BalanceUsageRecord>();
+		if (time == 5 && !StringUtils.hasLength(insertTime)) {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
+			;
+			
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            // 已使用优惠券记录wrapper
-            between2 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
+			;
+			
+			// 已使用优惠券记录wrapper
+			between2 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            between22 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
+			;
+			
+			between22 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            // 已使用红包记录wrapper
-            between3 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
+			;
+			
+			// 已使用红包记录wrapper
+			between3 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            between33 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
+			;
+			
+			between33 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
 //                    .between("insertTime", start, end)
-            ;
-
-            // 司机已消费金额
-            between4 = new EntityWrapper<BalanceUsageRecord>()
-                    .eq("type",1)
-                    .ne("purpose", 6)
+			;
+			
+			// 司机已消费金额
+			between4 = new EntityWrapper<BalanceUsageRecord>()
+					.eq("type", 1)
+					.ne("purpose", 6)
 //                    .between("createTime", start, end)
-            ;
-
-            // 司机提现
-            driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                    .eq("state", 2)
-                    .eq("type",1)
-                    .eq("userType", 2)
+			;
+			
+			// 司机提现
+			driverWrapper = new EntityWrapper<TPubWithdrawal>()
+					.eq("state", 2)
+					.eq("type", 1)
+					.eq("userType", 2)
 //                    .between("insertTime", start, end)
-            ;
-
-        }else{
-            driverWrapper = new EntityWrapper<TPubWithdrawal>()
-                    .eq("state", 2)
-                    .eq("type",1)
-                    .eq("userType", 2)
-                    .between("insertTime", start, end);
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end);
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("activityId")
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end);
-            // 已使用优惠券记录wrapper
-            between2 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                    .between("insertTime", start, end);
-            between22 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("couponId")
-                    .isNotNull("couponMoney")
-                    .between("insertTime", start, end);
-            // 已使用红包记录wrapper
-            between3 = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-                    .between("insertTime", start, end);
-            between33 = new EntityWrapper<TOrderLogistics>()
-                    .isNotNull("redPacketId")
-                    .isNotNull("redPacketMoney")
-                    .between("insertTime", start, end);
-            // 司机已消费金额
-            between4 = new EntityWrapper<BalanceUsageRecord>()
-                    .ne("purpose", 6)
-                    .eq("type",1)
-                    .between("createTime", start, end);
-
-
-        }
-        // 司机提现wrapper
-        if (type!=null){
-            switch (type){
+			;
+			
+		} else {
+			driverWrapper = new EntityWrapper<TPubWithdrawal>()
+					.eq("state", 2)
+					.eq("type", 1)
+					.eq("userType", 2)
+					.between("insertTime", start, end);
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end);
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("activityId")
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end);
+			// 已使用优惠券记录wrapper
+			between2 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+					.between("insertTime", start, end);
+			between22 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("couponId")
+					.isNotNull("couponMoney")
+					.between("insertTime", start, end);
+			// 已使用红包记录wrapper
+			between3 = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+					.between("insertTime", start, end);
+			between33 = new EntityWrapper<TOrderLogistics>()
+					.isNotNull("redPacketId")
+					.isNotNull("redPacketMoney")
+					.between("insertTime", start, end);
+			// 司机已消费金额
+			between4 = new EntityWrapper<BalanceUsageRecord>()
+					.ne("purpose", 6)
+					.eq("type", 1)
+					.between("createTime", start, end);
+			
+			
+		}
+		// 司机提现wrapper
+		if (type != null) {
+			switch (type) {
+				case 1:
+					// 红包
+					userRedPacketRecords = orderPrivateCarService.selectList(between3);
+					userRedPacketRecords1 = orderLogisticsService.selectList(between33);
+					break;
+				case 2:
+					userCouponRecords = orderPrivateCarService.selectList(between2);
+					userCouponRecords1 = orderLogisticsService.selectList(between22);
+					// 优惠券
+					break;
+				case 3:
+					// 司机消费记录
+					balanceUsageRecords = balanceUsageRecordService.selectList(between4);
+					driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
+					break;
+				case 4:
+					// 专车订单
+					tOrderPrivateCars = orderPrivateCarService.selectList(between);
+					// 小件物流订单
+					tOrderLogistics = orderLogisticsService.selectList(between1);
+					break;
+			}
+		} else {
+			// 红包
+			userRedPacketRecords = orderPrivateCarService.selectList(between3);
+			userRedPacketRecords1 = orderLogisticsService.selectList(between33);
+			// 优惠券
+			userCouponRecords = orderPrivateCarService.selectList(between2);
+			userCouponRecords1 = orderLogisticsService.selectList(between22);
+			// 专车订单
+			tOrderPrivateCars = orderPrivateCarService.selectList(between);
+			// 小件物流订单
+			tOrderLogistics = orderLogisticsService.selectList(between1);
+			// 消费
+			balanceUsageRecords = balanceUsageRecordService.selectList(between4);
+			// 提现
+			driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
+		}
+		
+		// 已发放补贴总额
+		BigDecimal total = new BigDecimal("0");
+		// 已使用折扣总额(用户端)
+		BigDecimal discount = new BigDecimal("0");
+		// 已使用红包总额(用户端)
+		BigDecimal redPackage = new BigDecimal("0");
+		// 已使用优惠券总额(用户端)
+		BigDecimal coupon = new BigDecimal("0");
+		// 已使用司机奖励总额(司机端)
+		BigDecimal driver = new BigDecimal("0");
+		// 司机已消费
+		BigDecimal driverConsume = new BigDecimal("0");
+		// 司机已提现
+		BigDecimal driverWithdrawal1 = new BigDecimal("0");
+		// 一次性查询所有用户信息
+		Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
+				.stream()
+				.collect(Collectors.toMap(TUser::getId, user -> user));
+		Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
+				.stream()
+				.collect(Collectors.toMap(TDriver::getId, user -> user));
+		// 查询已使用折扣总额
+		for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + tOrderPrivateCar.getOrderNum());
+			res.add(grantVO);
+		}
+		for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + tOrderPrivateCar.getOrderNum());
+			res.add(grantVO);
+		}
+		// 查询已使用红包总额
+		for (TOrderPrivateCar userRedPacketRecord : userRedPacketRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			if (userRedPacketRecord.getRedPacketMoney() == null) {
+				continue;
+			}
+			if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0")) == 0) {
+				continue;
+			}
+			grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userRedPacketRecord.getOrderNum());
+			res.add(grantVO);
+			redPackage = redPackage.add(userRedPacketRecord.getRedPacketMoney());
+		}
+		for (TOrderLogistics userRedPacketRecord : userRedPacketRecords1) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			if (userRedPacketRecord.getRedPacketMoney() == null) {
+				continue;
+			}
+			if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0")) == 0) {
+				continue;
+			}
+			grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userRedPacketRecord.getOrderNum());
+			res.add(grantVO);
+			redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
+		}
+		// 查询已领取优惠券总额
+		for (TOrderPrivateCar userCouponRecord : userCouponRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+			grantVO.setType("优惠券");
+			grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userCouponRecord.getOrderNum());
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
+			res.add(grantVO);
+		}
+		for (TOrderLogistics userCouponRecord : userCouponRecords1) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+			grantVO.setType("优惠券");
+			grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			grantVO.setRemark("订单号:" + userCouponRecord.getOrderNum());
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
+			res.add(grantVO);
+		}
+		// 司机消费奖励
+		for (BalanceUsageRecord balanceUsageRecord : balanceUsageRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(balanceUsageRecord.getCreateTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(balanceUsageRecord.getMoney().toString());
+			TDriver tUser = driverMap.get(balanceUsageRecord.getDriverId());
+			
+			if (tUser != null) {
+				grantVO.setName(tUser.getFirstName() + tUser.getLastName());
+			}
+			switch (balanceUsageRecord.getPurpose()) {
+				case 1:
+					//打车支付
+					grantVO.setRemark("余额支付" + "【打车支付】");
+					break;
+				case 2:
+					grantVO.setRemark("余额支付" + "【包裹支付】");
+					// 包裹支付
+					break;
+				case 3:
+					grantVO.setRemark("余额支付" + "【日结算】");
+					// 日结算
+					break;
+				case 4:
+					grantVO.setRemark("余额支付" + "【周结算】");
+					// 周结算
+					break;
+				case 5:
+					grantVO.setRemark("余额支付" + "【月结算】");
+					// 月结算
+					break;
+			}
+			driverConsume = driverConsume.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		// 司机提现
+		for (TPubWithdrawal balanceUsageRecord : driverWithdrawal) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(balanceUsageRecord.getInsertTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(balanceUsageRecord.getMoney().toString());
+			TDriver tUser = driverMap.get(balanceUsageRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getFirstName() + tUser.getLastName());
+			}
+			grantVO.setRemark("司机提现");
+			driverWithdrawal1 = driverWithdrawal1.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		
+		
+		// 总额
+		total = total.add(redPackage).add(coupon).add(discount).add(driverConsume).add(driverWithdrawal1);
+		// 已使用司机奖励合计
+		driver = driverConsume.add(driverWithdrawal1);
+		UseMoneyVO useMoneyVO = new UseMoneyVO();
+		useMoneyVO.setTotal(total);
+		useMoneyVO.setDiscount(discount);
+		useMoneyVO.setRedPackage(redPackage);
+		useMoneyVO.setCoupon(coupon);
+		useMoneyVO.setDriver(driver);
+		useMoneyVO.setDriverWithdrawal(driverWithdrawal1);
+		useMoneyVO.setDriverConsume(driverConsume);
+		return useMoneyVO;
+	}
+	
+	@Autowired
+	private ISysRedPacketRecordService sysRedPacketRecordService;
+	
+	/**
+	 * 发放补贴统计
+	 */
+	@RequestMapping(value = "/grant/list")
+	@ResponseBody
+	public Object list(Integer time, String insertTime, Integer type) {
+		if (time == null) {
+			time = 1;
+		}
+		String beginTime = null;
+		String endTime = null;
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+		// 获取当前日期
+		LocalDate today = LocalDate.now();
+		if (ToolUtil.isNotEmpty(insertTime)) {
+			beginTime = insertTime.split(" - ")[0];
+			endTime = insertTime.split(" - ")[1];
+			LocalDate s = LocalDate.parse(beginTime);
+			LocalDate e = LocalDate.parse(endTime);
+			start = s.atStartOfDay();
+			end = e.atTime(LocalTime.MAX);
+		} else if (time != null) {
+			switch (time) {
+				case 1:
+					// 获取当天的 00:00:00 和 23:59:59
+					LocalDateTime startOfDay = today.atStartOfDay();
+					LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
+					start = startOfDay;
+					end = endOfDay;
+					break;
+				case 2:
+					// 获取本周第一天的日期和时间
+					LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+					LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
+					
+					// 获取本周最后一天的日期和时间
+					LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+					LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
+					start = startOfWeek;
+					end = endOfWeek;
+					break;
+				case 3:
+					LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+					LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
+					
+					// 获取本月最后一天的日期和时间
+					LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+					LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
+					start = startOfMonth;
+					end = endOfMonth;
+					break;
+				case 4:
+					// 获取本年第一天的日期和时间
+					LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
+					LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
+					// 获取本年最后一天的日期和时间
+					LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
+					LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
+					start = startOfYear;
+					end = endOfYear;
+					break;
+			}
+		}
+		
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		// 列表res
+		List<GrantVO> res = new ArrayList<>();
+		// 专车订单
+		List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
+		// 小件物流
+		List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
+		// 优惠券领取记录
+		List<UserCouponRecord> userCouponRecords = new ArrayList<>();
+		// 红包领取记录
+		List<UserRedPacketRecord> userRedPacketRecords = new ArrayList<>();
+		// 司机奖励
+		List<DriverActivityHistory> driverActivityHistories = new ArrayList<>();
+		
+		// 专车wrapper
+		Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>();
+		// 小件物流wrapper
+		Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>();
+		// 优惠券领取记录wrapper
+		Wrapper<UserCouponRecord> between2 = new EntityWrapper<UserCouponRecord>();
+		// 红包领取记录wrapper
+		Wrapper<UserRedPacketRecord> between3 = new EntityWrapper<UserRedPacketRecord>();
+		// 司机奖励
+		Wrapper<DriverActivityHistory> between4 = new EntityWrapper<DriverActivityHistory>();
+		if (time == 5 && !StringUtils.hasLength(insertTime)) {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("discountMoney")
+			
+			;
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					
+					.isNotNull("discountMoney")
+			;
+			// 优惠券领取记录wrapper
+			between2 = new EntityWrapper<UserCouponRecord>()
+					.ne("couponUseType", 2)
+					.ne("couponUseType", 3)
+			;
+			// 红包领取记录wrapper
+			between3 = new EntityWrapper<UserRedPacketRecord>()
+					.ne("state", 0)
+			;
+			// 司机奖励
+			between4 = new EntityWrapper<DriverActivityHistory>()
+					.eq("carryOut", 2)
+			;
+		} else {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end)
+			;
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.between("insertTime", start, end)
+					.isNotNull("discountMoney")
+			;
+			// 优惠券领取记录wrapper
+			between2 = new EntityWrapper<UserCouponRecord>()
+					.ne("couponUseType", 2)
+					.ne("couponUseType", 3)
+					.between("insertTime", start, end);
+			// 红包领取记录wrapper
+			between3 = new EntityWrapper<UserRedPacketRecord>()
+					.ne("state", 0)
+					.between("insertTime", start, end);
+			// 司机奖励
+			between4 = new EntityWrapper<DriverActivityHistory>()
+					.eq("carryOut", 2)
+					.between("insertTime", start, end);
+		}
+		
+		if (type != null) {
+			
+			switch (type) {
+				case 1:
+					// 红包
+					userRedPacketRecords = userRedPacketRecordService.selectList(between3);
+					break;
+				case 2:
+					userCouponRecords = userCouponRecordService.selectList(between2);
+					// 优惠券
+					break;
+				case 3:
+					// 司机奖励
+					driverActivityHistories = driverActivityHistoryService.selectList(between4);
+					break;
+				case 4:
+					// 专车订单
+					tOrderPrivateCars = orderPrivateCarService.selectList(between);
+					// 小件物流订单
+					tOrderLogistics = orderLogisticsService.selectList(between1);
+					break;
+			}
+		} else {
+			// 专车订单
+			tOrderPrivateCars = orderPrivateCarService.selectList(between);
+			// 小件物流订单
+			tOrderLogistics = orderLogisticsService.selectList(between1);
+			// 司机奖励
+			driverActivityHistories = driverActivityHistoryService.selectList(between4);
+			userCouponRecords = userCouponRecordService.selectList(between2);
+			userRedPacketRecords = userRedPacketRecordService.selectList(between3);
+		}
+		
+		// 已发放补贴总额
+		BigDecimal total = new BigDecimal("0");
+		// 已使用折扣总额(用户端)
+		BigDecimal discount = new BigDecimal("0");
+		// 已领取红包总额(用户端)
+		BigDecimal redPackage = new BigDecimal("0");
+		// 已领取优惠券总额(用户端)
+		BigDecimal coupon = new BigDecimal("0");
+		// 已领取司机奖励总额(司机端)
+		BigDecimal driver = new BigDecimal("0");
+		Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
+				.stream()
+				.collect(Collectors.toMap(TUser::getId, user -> user));
+		Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
+				.stream()
+				.collect(Collectors.toMap(TDriver::getId, user -> user));
+		Map<Integer, UserActivity> userActivityMap = userActivityService.selectList(new EntityWrapper<UserActivity>())
+				.stream()
+				.collect(Collectors.toMap(UserActivity::getId, user -> user));
+		Map<Integer, UserActivityDiscount1> userActivityDiscountMap = userActivityDiscount1Service.selectList(new EntityWrapper<UserActivityDiscount1>())
+				.stream()
+				.collect(Collectors.toMap(UserActivityDiscount1::getId, user -> user));
+		Map<Integer, UserActivityRedenvelope> userActivityRedenvelopeMap = userActivityRedenvelopeService.selectList(new EntityWrapper<UserActivityRedenvelope>())
+				.stream()
+				.collect(Collectors.toMap(UserActivityRedenvelope::getId, user -> user));
+		Map<Integer, SysCouponActivity> sysCouponActivityMap = sysCouponActivityService.selectList(new EntityWrapper<SysCouponActivity>())
+				.stream()
+				.collect(Collectors.toMap(SysCouponActivity::getId, user -> user));
+		// 查询已使用折扣总额
+		for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
+			if (tOrderPrivateCar.getDiscountMoney() == null || tOrderPrivateCar.getDiscountMoney() == 0) {
+				continue;
+			}
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
+			if (userActivityDiscount1 != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+		}
+		for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
+			if (tOrderPrivateCar.getDiscountMoney() == null || tOrderPrivateCar.getDiscountMoney() == 0) {
+				continue;
+			}
+			
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
+			if (userActivityDiscount1 != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+		}
+		// 查询已领取红包总额
+		for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			grantVO.setAmount(userRedPacketRecord.getMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			if (userRedPacketRecord.getIsGrant() == 1) {
+				// 后台发放的红包
+				grantVO.setRemark("指定发放");
+			}
+			
+			
+			UserActivityRedenvelope userActivityRedenvelope = userActivityRedenvelopeMap.get(userRedPacketRecord.getRedPacketActivityId());
+			
+			if (userActivityRedenvelope != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityRedenvelope.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+			redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getMoney().toString()));
+		}
+		// 查询已领取优惠券总额
+		for (UserCouponRecord userCouponRecord : userCouponRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+            switch (userCouponRecord.getCouponUseType()){
+                case 0:
+                    grantVO.setType(userCouponRecord.getCouponType() == 1 ? "通用 抵扣券" : "通用 满减券");
+                    break;
                 case 1:
-                    // 红包
-                    userRedPacketRecords = orderPrivateCarService.selectList(between3);
-                    userRedPacketRecords1 = orderLogisticsService.selectList(between33);
-                    break;
-                case 2:
-                    userCouponRecords = orderPrivateCarService.selectList(between2);
-                    userCouponRecords1 = orderLogisticsService.selectList(between22);
-                    // 优惠券
-                    break;
-                case 3:
-                    // 司机消费记录
-                    balanceUsageRecords = balanceUsageRecordService.selectList(between4);
-                    driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
+                    grantVO.setType(userCouponRecord.getCouponType() == 1 ? "打车 抵扣券" : "打车 满减券");
                     break;
                 case 4:
-                    // 专车订单
-                    tOrderPrivateCars = orderPrivateCarService.selectList(between);
-                    // 小件物流订单
-                    tOrderLogistics = orderLogisticsService.selectList(between1);
+                    grantVO.setType(userCouponRecord.getCouponType() == 1 ? "包裹 抵扣券" : "包裹 满减券");
                     break;
             }
-        }else{
-            // 红包
-            userRedPacketRecords = orderPrivateCarService.selectList(between3);
-            userRedPacketRecords1 = orderLogisticsService.selectList(between33);
-            // 优惠券
-            userCouponRecords = orderPrivateCarService.selectList(between2);
-            userCouponRecords1 = orderLogisticsService.selectList(between22);
-            // 专车订单
-            tOrderPrivateCars = orderPrivateCarService.selectList(between);
-            // 小件物流订单
-            tOrderLogistics = orderLogisticsService.selectList(between1);
-            // 消费
-            balanceUsageRecords = balanceUsageRecordService.selectList(between4);
-            // 提现
-            driverWithdrawal = pubWithdrawalService.selectList(driverWrapper);
-        }
-
-        // 已发放补贴总额
-        BigDecimal total = new BigDecimal("0");
-        // 已使用折扣总额(用户端)
-        BigDecimal discount = new BigDecimal("0");
-        // 已使用红包总额(用户端)
-        BigDecimal redPackage = new BigDecimal("0");
-        // 已使用优惠券总额(用户端)
-        BigDecimal coupon = new BigDecimal("0");
-        // 已使用司机奖励总额(司机端)
-        BigDecimal driver = new BigDecimal("0");
-        // 司机已消费
-        BigDecimal driverConsume = new BigDecimal("0");
-        // 司机已提现
-        BigDecimal driverWithdrawal1 = new BigDecimal("0");
-        // 一次性查询所有用户信息
-        Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
-                .stream()
-                .collect(Collectors.toMap(TUser::getId, user -> user));
-        Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
-                .stream()
-                .collect(Collectors.toMap(TDriver::getId, user -> user));
-        // 查询已使用折扣总额
-        for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+tOrderPrivateCar.getOrderNum());
-            res.add(grantVO);
-        }
-        for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+tOrderPrivateCar.getOrderNum());
-            res.add(grantVO);
-        }
-        // 查询已使用红包总额
-        for (TOrderPrivateCar userRedPacketRecord : userRedPacketRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            if (userRedPacketRecord.getRedPacketMoney()==null){
-                continue;
-            }
-            if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0"))==0){
-                continue;
-            }
-            grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userRedPacketRecord.getOrderNum());
-            res.add(grantVO);
-            redPackage = redPackage.add(userRedPacketRecord.getRedPacketMoney());
-        }
-        for (TOrderLogistics userRedPacketRecord : userRedPacketRecords1) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            if (userRedPacketRecord.getRedPacketMoney()==null){
-                continue;
-            }
-            if (userRedPacketRecord.getRedPacketMoney().compareTo(new BigDecimal("0"))==0){
-                continue;
-            }
-            grantVO.setAmount(userRedPacketRecord.getRedPacketMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userRedPacketRecord.getOrderNum());
-            res.add(grantVO);
-            redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getRedPacketMoney().toString()));
-        }
-        // 查询已领取优惠券总额
-        for (TOrderPrivateCar userCouponRecord : userCouponRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userCouponRecord.getOrderNum());
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
-            res.add(grantVO);
-        }
-        for (TOrderLogistics userCouponRecord : userCouponRecords1) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getCouponMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            grantVO.setRemark("订单号:"+userCouponRecord.getOrderNum());
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getCouponMoney().toString()));
-            res.add(grantVO);
-        }
-        // 司机消费奖励
-        for (BalanceUsageRecord balanceUsageRecord : balanceUsageRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(balanceUsageRecord.getCreateTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(balanceUsageRecord.getMoney().toString());
-            TDriver tUser = driverMap.get(balanceUsageRecord.getDriverId());
-
-            if (tUser!=null){
-                grantVO.setName(tUser.getFirstName()+tUser.getLastName());
-            }
-            switch (balanceUsageRecord.getPurpose()){
-                case 1:
-                    //打车支付
-                    grantVO.setRemark("余额支付"+"【打车支付】");
-                    break;
-                case 2:
-                    grantVO.setRemark("余额支付"+"【包裹支付】");
-                    // 包裹支付
-                    break;
-                case 3:
-                    grantVO.setRemark("余额支付"+"【日结算】");
-                    // 日结算
-                    break;
-                case 4:
-                    grantVO.setRemark("余额支付"+"【周结算】");
-                    // 周结算
-                    break;
-                case 5:
-                    grantVO.setRemark("余额支付"+"【月结算】");
-                    // 月结算
-                    break;
-            }
-            driverConsume = driverConsume.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-        // 司机提现
-        for (TPubWithdrawal balanceUsageRecord : driverWithdrawal) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(balanceUsageRecord.getInsertTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(balanceUsageRecord.getMoney().toString());
-            TDriver tUser = driverMap.get(balanceUsageRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getFirstName()+tUser.getLastName());
-            }
-            grantVO.setRemark("司机提现");
-            driverWithdrawal1 = driverWithdrawal1.add(new BigDecimal(balanceUsageRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-
-
-        // 总额
-        total = total.add(redPackage).add(coupon).add(discount).add(driverConsume).add(driverWithdrawal1);
-        // 已使用司机奖励合计
-        driver = driverConsume.add(driverWithdrawal1);
-        UseMoneyVO useMoneyVO = new UseMoneyVO();
-        useMoneyVO.setTotal(total);
-        useMoneyVO.setDiscount(discount);
-        useMoneyVO.setRedPackage(redPackage);
-        useMoneyVO.setCoupon(coupon);
-        useMoneyVO.setDriver(driver);
-        useMoneyVO.setDriverWithdrawal(driverWithdrawal1);
-        useMoneyVO.setDriverConsume(driverConsume);
-        return useMoneyVO;
-    }
-
-    @Autowired
-    private ISysRedPacketRecordService sysRedPacketRecordService;
-    /**
-     * 发放补贴统计
-     */
-    @RequestMapping(value = "/grant/list")
-    @ResponseBody
-    public Object list(Integer time,String insertTime,Integer type) {
-        if (time == null){
-            time = 1;
-        }
-        String beginTime = null;
-        String endTime = null;
-        LocalDateTime start =null;
-        LocalDateTime end =null;
-        // 获取当前日期
-        LocalDate today = LocalDate.now();
-        if (ToolUtil.isNotEmpty(insertTime)){
-            beginTime = insertTime.split(" - ")[0];
-            endTime = insertTime.split(" - ")[1];
-            LocalDate s = LocalDate.parse(beginTime);
-            LocalDate e = LocalDate.parse(endTime);
-            start = s.atStartOfDay();
-            end = e.atTime(LocalTime.MAX);
-        }else if (time!=null) {
-            switch (time) {
-                case 1:
-                    // 获取当天的 00:00:00 和 23:59:59
-                    LocalDateTime startOfDay = today.atStartOfDay();
-                    LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
-                    start = startOfDay;
-                    end = endOfDay;
-                    break;
-                case 2:
-                    // 获取本周第一天的日期和时间
-                    LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-                    LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
-
-                    // 获取本周最后一天的日期和时间
-                    LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
-                    LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
-                    start = startOfWeek;
-                    end = endOfWeek;
-                    break;
-                case 3:
-                    LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
-                    LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
-
-                    // 获取本月最后一天的日期和时间
-                    LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
-                    LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
-                    start = startOfMonth;
-                    end = endOfMonth;
-                    break;
-                case 4:
-                    // 获取本年第一天的日期和时间
-                    LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
-                    LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
-                    // 获取本年最后一天的日期和时间
-                    LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
-                    LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
-                    start = startOfYear;
-                    end = endOfYear;
-                    break;
-            }
-        }
-
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        // 列表res
-        List<GrantVO> res = new ArrayList<>();
-        // 专车订单
-        List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
-        // 小件物流
-        List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
-        // 优惠券领取记录
-        List<UserCouponRecord> userCouponRecords = new ArrayList<>();
-        // 红包领取记录
-        List<UserRedPacketRecord> userRedPacketRecords = new ArrayList<>();
-        // 司机奖励
-        List<DriverActivityHistory> driverActivityHistories = new ArrayList<>();
-
-        // 专车wrapper
-        Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>()
-
-                ;
-        // 小件物流wrapper
-        Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>()
-
-                ;
-        // 优惠券领取记录wrapper
-        Wrapper<UserCouponRecord> between2 = new EntityWrapper<UserCouponRecord>()
-                ;
-        // 红包领取记录wrapper
-        Wrapper<UserRedPacketRecord> between3 = new EntityWrapper<UserRedPacketRecord>()
-                ;
-        // 司机奖励
-        Wrapper<DriverActivityHistory> between4 = new EntityWrapper<DriverActivityHistory>()
-                ;
-        if (time == 5 && !StringUtils.hasLength(insertTime)){
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("discountMoney")
-
-                    ;
-            // 小件物流wrapper
-           between1 = new EntityWrapper<TOrderLogistics>()
-
-                    .isNotNull("discountMoney")
-                    ;
-            // 优惠券领取记录wrapper
-            between2 = new EntityWrapper<UserCouponRecord>()
-                    .ne("couponUseType", 2)
-                    .ne("couponUseType", 3)
-                    ;
-            // 红包领取记录wrapper
-            between3 = new EntityWrapper<UserRedPacketRecord>()
-                    .ne("state",0)
-                    ;
-            // 司机奖励
-            between4 = new EntityWrapper<DriverActivityHistory>()
-                    .eq("carryOut", 2)
-                    ;
-        }else{
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end)
-            ;
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-                    .between("insertTime", start, end)
-                    .isNotNull("discountMoney")
-            ;
-            // 优惠券领取记录wrapper
-            between2 = new EntityWrapper<UserCouponRecord>()
-                    .ne("couponUseType", 2)
-                    .ne("couponUseType", 3)
-                    .between("insertTime", start, end);
-            // 红包领取记录wrapper
-            between3 = new EntityWrapper<UserRedPacketRecord>()
-                    .ne("state",0)
-                    .between("insertTime", start, end);
-            // 司机奖励
-            between4 = new EntityWrapper<DriverActivityHistory>()
-                    .eq("carryOut", 2)
-                    .between("insertTime", start, end);
-        }
-
-        if (type!=null){
-
-            switch (type){
-                case 1:
-                    // 红包
-                    userRedPacketRecords = userRedPacketRecordService.selectList(between3);
-                    break;
-                case 2:
-                    userCouponRecords = userCouponRecordService.selectList(between2);
-                    // 优惠券
-                    break;
-                case 3:
-                    // 司机奖励
-                    driverActivityHistories = driverActivityHistoryService.selectList(between4);
-                    break;
-                case 4:
-                    // 专车订单
-                    tOrderPrivateCars = orderPrivateCarService.selectList(between);
-                    // 小件物流订单
-                    tOrderLogistics = orderLogisticsService.selectList(between1);
-                    break;
-            }
-        }else{
-            // 专车订单
-            tOrderPrivateCars = orderPrivateCarService.selectList(between);
-            // 小件物流订单
-            tOrderLogistics = orderLogisticsService.selectList(between1);
-            // 司机奖励
-            driverActivityHistories = driverActivityHistoryService.selectList(between4);
-            userCouponRecords = userCouponRecordService.selectList(between2);
-            userRedPacketRecords = userRedPacketRecordService.selectList(between3);
-        }
-
-        // 已发放补贴总额
-        BigDecimal total = new BigDecimal("0");
-        // 已使用折扣总额(用户端)
-        BigDecimal discount = new BigDecimal("0");
-        // 已领取红包总额(用户端)
-        BigDecimal redPackage = new BigDecimal("0");
-        // 已领取优惠券总额(用户端)
-        BigDecimal coupon = new BigDecimal("0");
-        // 已领取司机奖励总额(司机端)
-        BigDecimal driver = new BigDecimal("0");
-        Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
-                .stream()
-                .collect(Collectors.toMap(TUser::getId, user -> user));
-        Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
-                .stream()
-                .collect(Collectors.toMap(TDriver::getId, user -> user));
-        Map<Integer, UserActivity> userActivityMap = userActivityService.selectList(new EntityWrapper<UserActivity>())
-                .stream()
-                .collect(Collectors.toMap(UserActivity::getId, user -> user));
-        Map<Integer, UserActivityDiscount1> userActivityDiscountMap = userActivityDiscount1Service.selectList(new EntityWrapper<UserActivityDiscount1>())
-                .stream()
-                .collect(Collectors.toMap(UserActivityDiscount1::getId, user -> user));
-        Map<Integer, UserActivityRedenvelope> userActivityRedenvelopeMap = userActivityRedenvelopeService.selectList(new EntityWrapper<UserActivityRedenvelope>())
-                .stream()
-                .collect(Collectors.toMap(UserActivityRedenvelope::getId, user -> user));
-        Map<Integer, SysCouponActivity> sysCouponActivityMap = sysCouponActivityService.selectList(new EntityWrapper<SysCouponActivity>())
-                .stream()
-                .collect(Collectors.toMap(SysCouponActivity::getId, user -> user));
-        // 查询已使用折扣总额
-        for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
-            if (tOrderPrivateCar.getDiscountMoney()==null || tOrderPrivateCar.getDiscountMoney() == 0){
-                continue;
-            }
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
-            if (userActivityDiscount1!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-        }
-        for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
-            if (tOrderPrivateCar.getDiscountMoney()==null || tOrderPrivateCar.getDiscountMoney() == 0){
-                continue;
-            }
-
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
-            if (userActivityDiscount1!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-        }
-        // 查询已领取红包总额
-        for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            grantVO.setAmount(userRedPacketRecord.getMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            if (userRedPacketRecord.getIsGrant() == 1){
-                // 后台发放的红包
-                grantVO.setRemark("指定发放");
-            }
-
-
-            UserActivityRedenvelope userActivityRedenvelope = userActivityRedenvelopeMap.get(userRedPacketRecord.getRedPacketActivityId());
-
-            if (userActivityRedenvelope!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityRedenvelope.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-            redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getMoney().toString()));
-        }
-        // 查询已领取优惠券总额
-        for (UserCouponRecord userCouponRecord : userCouponRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            SysCouponActivity sysCouponActivity = sysCouponActivityMap.get(userCouponRecord.getCouponActivityId());
-
-            if (sysCouponActivity!=null){
-                grantVO.setRemark(sysCouponActivity.getName());
-            }
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-        // 已领取司机奖励
-        for (DriverActivityHistory driverActivityHistory : driverActivityHistories) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(driverActivityHistory.getInsertTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(driverActivityHistory.getMoney().toString());
-            TDriver tDriver = driverMap.get(driverActivityHistory.getDriverId());
-            if (tDriver!=null){
-                grantVO.setName(tDriver.getFirstName()+tDriver.getLastName());
-            }
-            Integer type1 = driverActivityHistory.getType();
-            switch (type1){
-                case 1:
-                    grantVO.setRemark("邀请司机注册");
-                    break;
-                case 2:
-                    grantVO.setRemark("邀请用户注册");
-                    break;
-                case 3:
-                    grantVO.setRemark("累计在线");
-                    break;
-                case 4:
-                    grantVO.setRemark("订单量");
-                    break;
-            }
-            driver = driver.add(new BigDecimal(driverActivityHistory.getMoney().toString()));
-            res.add(grantVO);
-        }
-        List<GrantVO> sortedList = res.stream()
-                .sorted((o1, o2) -> o2.getInsertTime().compareTo(o1.getInsertTime()))
-                .collect(Collectors.toList());
-        total = total.add(redPackage).add(coupon).add(discount).add(driver);
-        return sortedList;
-    }
-    @RequestMapping(value = "/grant/getCount")
-    @ResponseBody
-    public Object getCount(Integer time,String insertTime,Integer type) {
-        GrantMoneyVO result = new GrantMoneyVO();
-        if (time == null){
-            time = 1;
-        }
-        String beginTime = null;
-        String endTime = null;
-        LocalDateTime start =null;
-        LocalDateTime end =null;
-        // 获取当前日期
-        LocalDate today = LocalDate.now();
-        if (ToolUtil.isNotEmpty(insertTime)){
-            beginTime = insertTime.split(" - ")[0];
-            endTime = insertTime.split(" - ")[1];
-            LocalDate s = LocalDate.parse(beginTime);
-            LocalDate e = LocalDate.parse(endTime);
-            start = s.atStartOfDay();
-            end = e.atTime(LocalTime.MAX);
-        }else if (time!=null) {
-            switch (time) {
-                case 1:
-                    // 获取当天的 00:00:00 和 23:59:59
-                    LocalDateTime startOfDay = today.atStartOfDay();
-                    LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
-                    start = startOfDay;
-                    end = endOfDay;
-                    break;
-                case 2:
-                    // 获取本周第一天的日期和时间
-                    LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-                    LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
-
-                    // 获取本周最后一天的日期和时间
-                    LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
-                    LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
-                    start = startOfWeek;
-                    end = endOfWeek;
-                    break;
-                case 3:
-                    LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
-                    LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
-
-                    // 获取本月最后一天的日期和时间
-                    LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
-                    LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
-                    start = startOfMonth;
-                    end = endOfMonth;
-                    break;
-                case 4:
-                    // 获取本年第一天的日期和时间
-                    LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
-                    LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
-                    // 获取本年最后一天的日期和时间
-                    LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
-                    LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
-                    start = startOfYear;
-                    end = endOfYear;
-                    break;
-            }
-        }
-
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        // 列表res
-        List<GrantVO> res = new ArrayList<>();
-        // 专车订单
-        List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
-        // 小件物流
-        List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
-        // 优惠券领取记录
-        List<UserCouponRecord> userCouponRecords = new ArrayList<>();
-        // 红包领取记录
-        List<UserRedPacketRecord> userRedPacketRecords = new ArrayList<>();
-        // 司机奖励
-        List<DriverActivityHistory> driverActivityHistories = new ArrayList<>();
-
-        // 专车wrapper
-        Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>()
-
-                ;
-        // 小件物流wrapper
-        Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>()
-
-                ;
-        // 优惠券领取记录wrapper
-        Wrapper<UserCouponRecord> between2 = new EntityWrapper<UserCouponRecord>()
-                ;
-        // 红包领取记录wrapper
-        Wrapper<UserRedPacketRecord> between3 = new EntityWrapper<UserRedPacketRecord>()
-                ;
-        // 司机奖励
-        Wrapper<DriverActivityHistory> between4 = new EntityWrapper<DriverActivityHistory>()
-                ;
-        if (time == 5 && !StringUtils.hasLength(insertTime)){
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("discountMoney")
-
-            ;
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-
-                    .isNotNull("discountMoney")
-            ;
-            // 优惠券领取记录wrapper
-            between2 = new EntityWrapper<UserCouponRecord>()
-                    .ne("couponUseType", 2)
-                    .ne("couponUseType", 3)
-            ;
-            // 红包领取记录wrapper
-            between3 = new EntityWrapper<UserRedPacketRecord>()
-                    .ne("state",0)
-            ;
-            // 司机奖励
-            between4 = new EntityWrapper<DriverActivityHistory>()
-                    .eq("carryOut", 2)
-            ;
-        }else{
-            // 专车wrapper
-            between = new EntityWrapper<TOrderPrivateCar>()
-                    .isNotNull("discountMoney")
-                    .between("insertTime", start, end)
-            ;
-            // 小件物流wrapper
-            between1 = new EntityWrapper<TOrderLogistics>()
-                    .between("insertTime", start, end)
-                    .isNotNull("discountMoney")
-            ;
-            // 优惠券领取记录wrapper
-            between2 = new EntityWrapper<UserCouponRecord>()
-                    .ne("couponUseType", 2)
-                    .ne("couponUseType", 3)
-                    .between("insertTime", start, end);
-            // 红包领取记录wrapper
-            between3 = new EntityWrapper<UserRedPacketRecord>()
-                    .ne("state",0)
-                    .between("insertTime", start, end);
-            // 司机奖励
-            between4 = new EntityWrapper<DriverActivityHistory>()
-                    .eq("carryOut", 2)
-                    .between("insertTime", start, end);
-        }
-
-        if (type!=null){
-
-            switch (type){
-                case 1:
-                    // 红包
-                    userRedPacketRecords = userRedPacketRecordService.selectList(between3);
-                    break;
-                case 2:
-                    userCouponRecords = userCouponRecordService.selectList(between2);
-                    // 优惠券
-                    break;
-                case 3:
-                    // 司机奖励
-                    driverActivityHistories = driverActivityHistoryService.selectList(between4);
-                    break;
-                case 4:
-                    // 专车订单
-                    tOrderPrivateCars = orderPrivateCarService.selectList(between);
-                    // 小件物流订单
-                    tOrderLogistics = orderLogisticsService.selectList(between1);
-                    break;
-            }
-        }else{
-            // 专车订单
-            tOrderPrivateCars = orderPrivateCarService.selectList(between);
-            // 小件物流订单
-            tOrderLogistics = orderLogisticsService.selectList(between1);
-            // 司机奖励
-            driverActivityHistories = driverActivityHistoryService.selectList(between4);
-            userCouponRecords = userCouponRecordService.selectList(between2);
-            userRedPacketRecords = userRedPacketRecordService.selectList(between3);
-        }
-
-        // 已发放补贴总额
-        BigDecimal total = new BigDecimal("0");
-        // 已使用折扣总额(用户端)
-        BigDecimal discount = new BigDecimal("0");
-        // 已领取红包总额(用户端)
-        BigDecimal redPackage = new BigDecimal("0");
-        // 已领取优惠券总额(用户端)
-        BigDecimal coupon = new BigDecimal("0");
-        // 已领取司机奖励总额(司机端)
-        BigDecimal driver = new BigDecimal("0");
-        Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
-                .stream()
-                .collect(Collectors.toMap(TUser::getId, user -> user));
-        Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
-                .stream()
-                .collect(Collectors.toMap(TDriver::getId, user -> user));
-        Map<Integer, UserActivity> userActivityMap = userActivityService.selectList(new EntityWrapper<UserActivity>())
-                .stream()
-                .collect(Collectors.toMap(UserActivity::getId, user -> user));
-        Map<Integer, UserActivityDiscount1> userActivityDiscountMap = userActivityDiscount1Service.selectList(new EntityWrapper<UserActivityDiscount1>())
-                .stream()
-                .collect(Collectors.toMap(UserActivityDiscount1::getId, user -> user));
-        Map<Integer, UserActivityRedenvelope> userActivityRedenvelopeMap = userActivityRedenvelopeService.selectList(new EntityWrapper<UserActivityRedenvelope>())
-                .stream()
-                .collect(Collectors.toMap(UserActivityRedenvelope::getId, user -> user));
-        Map<Integer, SysCouponActivity> sysCouponActivityMap = sysCouponActivityService.selectList(new EntityWrapper<SysCouponActivity>())
-                .stream()
-                .collect(Collectors.toMap(SysCouponActivity::getId, user -> user));
-        // 查询已使用折扣总额
-        for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
-            if (tOrderPrivateCar.getDiscountMoney()==null || tOrderPrivateCar.getDiscountMoney() == 0){
-                continue;
-            }
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
-            if (userActivityDiscount1!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-        }
-        for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
-            if (tOrderPrivateCar.getDiscountMoney()==null || tOrderPrivateCar.getDiscountMoney() == 0){
-                continue;
-            }
-
-            discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
-            grantVO.setType("折扣");
-
-            grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
-            TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
-            if (userActivityDiscount1!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-        }
-        // 查询已领取红包总额
-        for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
-            grantVO.setType("红包");
-            grantVO.setAmount(userRedPacketRecord.getMoney().toString());
-            TUser tUser = userMap.get(userRedPacketRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            if (userRedPacketRecord.getIsGrant() == 1){
-                // 后台发放的红包
-                grantVO.setRemark("指定发放");
-            }
-
-
-            UserActivityRedenvelope userActivityRedenvelope = userActivityRedenvelopeMap.get(userRedPacketRecord.getRedPacketActivityId());
-
-            if (userActivityRedenvelope!=null){
-                UserActivity userActivity = userActivityMap.get(userActivityRedenvelope.getUserActivityId());
-                if (userActivity!=null){
-                    grantVO.setRemark(userActivity.getName());
-                }
-            }
-            res.add(grantVO);
-            redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getMoney().toString()));
-        }
-        // 查询已领取优惠券总额
-        for (UserCouponRecord userCouponRecord : userCouponRecords) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
-            grantVO.setType("优惠券");
-            grantVO.setAmount(userCouponRecord.getMoney().toString());
-            TUser tUser = userMap.get(userCouponRecord.getUserId());
-            if (tUser!=null){
-                grantVO.setName(tUser.getNickName());
-            }
-            SysCouponActivity sysCouponActivity = sysCouponActivityMap.get(userCouponRecord.getCouponActivityId());
-
-            if (sysCouponActivity!=null){
-                grantVO.setRemark(sysCouponActivity.getName());
-            }
-            coupon = coupon.add(new BigDecimal(userCouponRecord.getMoney().toString()));
-            res.add(grantVO);
-        }
-        // 已领取司机奖励
-        for (DriverActivityHistory driverActivityHistory : driverActivityHistories) {
-            GrantVO grantVO = new GrantVO();
-            grantVO.setInsertTime(format.format(driverActivityHistory.getInsertTime()));
-            grantVO.setType("司机奖励");
-            grantVO.setAmount(driverActivityHistory.getMoney().toString());
-            TDriver tDriver = driverMap.get(driverActivityHistory.getDriverId());
-            if (tDriver!=null){
-                grantVO.setName(tDriver.getFirstName()+tDriver.getLastName());
-            }
-            Integer type1 = driverActivityHistory.getType();
-            switch (type1){
-                case 1:
-                    grantVO.setRemark("邀请司机注册");
-                    break;
-                case 2:
-                    grantVO.setRemark("邀请用户注册");
-                    break;
-                case 3:
-                    grantVO.setRemark("累计在线");
-                    break;
-                case 4:
-                    grantVO.setRemark("订单量");
-                    break;
-            }
-            driver = driver.add(new BigDecimal(driverActivityHistory.getMoney().toString()));
-            res.add(grantVO);
-        }
-        total = total.add(redPackage).add(coupon).add(discount).add(driver);
-        result.setTotal(total);
-        result.setDiscount(discount);
-        result.setCoupon(coupon);
-        result.setDriver(driver);
-        result.setRedPackage(redPackage);
-        return result;
-    }
+			grantVO.setAmount(userCouponRecord.getMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			SysCouponActivity sysCouponActivity = sysCouponActivityMap.get(userCouponRecord.getCouponActivityId());
+			
+			if (sysCouponActivity != null) {
+				grantVO.setRemark(sysCouponActivity.getName());
+			}
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		// 已领取司机奖励
+		for (DriverActivityHistory driverActivityHistory : driverActivityHistories) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(driverActivityHistory.getInsertTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(driverActivityHistory.getMoney().toString());
+			TDriver tDriver = driverMap.get(driverActivityHistory.getDriverId());
+			if (tDriver != null) {
+				grantVO.setName(tDriver.getFirstName() + tDriver.getLastName());
+			}
+			Integer type1 = driverActivityHistory.getType();
+			switch (type1) {
+				case 1:
+					grantVO.setRemark("邀请司机注册");
+					break;
+				case 2:
+					grantVO.setRemark("邀请用户注册");
+					break;
+				case 3:
+					grantVO.setRemark("累计在线");
+					break;
+				case 4:
+					grantVO.setRemark("订单量");
+					break;
+			}
+			driver = driver.add(new BigDecimal(driverActivityHistory.getMoney().toString()));
+			res.add(grantVO);
+		}
+		List<GrantVO> sortedList = res.stream()
+				.sorted((o1, o2) -> o2.getInsertTime().compareTo(o1.getInsertTime()))
+				.collect(Collectors.toList());
+		total = total.add(redPackage).add(coupon).add(discount).add(driver);
+		return sortedList;
+	}
+	
+	@RequestMapping(value = "/grant/getCount")
+	@ResponseBody
+	public Object getCount(Integer time, String insertTime, Integer type) {
+		GrantMoneyVO result = new GrantMoneyVO();
+		if (time == null) {
+			time = 1;
+		}
+		String beginTime = null;
+		String endTime = null;
+		LocalDateTime start = null;
+		LocalDateTime end = null;
+		// 获取当前日期
+		LocalDate today = LocalDate.now();
+		if (ToolUtil.isNotEmpty(insertTime)) {
+			beginTime = insertTime.split(" - ")[0];
+			endTime = insertTime.split(" - ")[1];
+			LocalDate s = LocalDate.parse(beginTime);
+			LocalDate e = LocalDate.parse(endTime);
+			start = s.atStartOfDay();
+			end = e.atTime(LocalTime.MAX);
+		} else if (time != null) {
+			switch (time) {
+				case 1:
+					// 获取当天的 00:00:00 和 23:59:59
+					LocalDateTime startOfDay = today.atStartOfDay();
+					LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
+					start = startOfDay;
+					end = endOfDay;
+					break;
+				case 2:
+					// 获取本周第一天的日期和时间
+					LocalDate firstDayOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+					LocalDateTime startOfWeek = firstDayOfWeek.atStartOfDay();
+					
+					// 获取本周最后一天的日期和时间
+					LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+					LocalDateTime endOfWeek = lastDayOfWeek.atTime(LocalTime.MAX);
+					start = startOfWeek;
+					end = endOfWeek;
+					break;
+				case 3:
+					LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+					LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay();
+					
+					// 获取本月最后一天的日期和时间
+					LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+					LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX);
+					start = startOfMonth;
+					end = endOfMonth;
+					break;
+				case 4:
+					// 获取本年第一天的日期和时间
+					LocalDate firstDayOfYear = LocalDate.of(today.getYear(), Month.JANUARY, 1);
+					LocalDateTime startOfYear = firstDayOfYear.atStartOfDay();
+					// 获取本年最后一天的日期和时间
+					LocalDate lastDayOfYear = LocalDate.of(today.getYear(), Month.DECEMBER, 31);
+					LocalDateTime endOfYear = lastDayOfYear.atTime(LocalTime.MAX);
+					start = startOfYear;
+					end = endOfYear;
+					break;
+			}
+		}
+		
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		// 列表res
+		List<GrantVO> res = new ArrayList<>();
+		// 专车订单
+		List<TOrderPrivateCar> tOrderPrivateCars = new ArrayList<>();
+		// 小件物流
+		List<TOrderLogistics> tOrderLogistics = new ArrayList<>();
+		// 优惠券领取记录
+		List<UserCouponRecord> userCouponRecords = new ArrayList<>();
+		// 红包领取记录
+		List<UserRedPacketRecord> userRedPacketRecords = new ArrayList<>();
+		// 司机奖励
+		List<DriverActivityHistory> driverActivityHistories = new ArrayList<>();
+		
+		// 专车wrapper
+		Wrapper<TOrderPrivateCar> between = new EntityWrapper<TOrderPrivateCar>();
+		// 小件物流wrapper
+		Wrapper<TOrderLogistics> between1 = new EntityWrapper<TOrderLogistics>();
+		// 优惠券领取记录wrapper
+		Wrapper<UserCouponRecord> between2 = new EntityWrapper<UserCouponRecord>();
+		// 红包领取记录wrapper
+		Wrapper<UserRedPacketRecord> between3 = new EntityWrapper<UserRedPacketRecord>();
+		// 司机奖励
+		Wrapper<DriverActivityHistory> between4 = new EntityWrapper<DriverActivityHistory>();
+		if (time == 5 && !StringUtils.hasLength(insertTime)) {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("discountMoney")
+			
+			;
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					
+					.isNotNull("discountMoney")
+			;
+			// 优惠券领取记录wrapper
+			between2 = new EntityWrapper<UserCouponRecord>()
+					.ne("couponUseType", 2)
+					.ne("couponUseType", 3)
+			;
+			// 红包领取记录wrapper
+			between3 = new EntityWrapper<UserRedPacketRecord>()
+					.ne("state", 0)
+			;
+			// 司机奖励
+			between4 = new EntityWrapper<DriverActivityHistory>()
+					.eq("carryOut", 2)
+			;
+		} else {
+			// 专车wrapper
+			between = new EntityWrapper<TOrderPrivateCar>()
+					.isNotNull("discountMoney")
+					.between("insertTime", start, end)
+			;
+			// 小件物流wrapper
+			between1 = new EntityWrapper<TOrderLogistics>()
+					.between("insertTime", start, end)
+					.isNotNull("discountMoney")
+			;
+			// 优惠券领取记录wrapper
+			between2 = new EntityWrapper<UserCouponRecord>()
+					.ne("couponUseType", 2)
+					.ne("couponUseType", 3)
+					.between("insertTime", start, end);
+			// 红包领取记录wrapper
+			between3 = new EntityWrapper<UserRedPacketRecord>()
+					.ne("state", 0)
+					.between("insertTime", start, end);
+			// 司机奖励
+			between4 = new EntityWrapper<DriverActivityHistory>()
+					.eq("carryOut", 2)
+					.between("insertTime", start, end);
+		}
+		
+		if (type != null) {
+			
+			switch (type) {
+				case 1:
+					// 红包
+					userRedPacketRecords = userRedPacketRecordService.selectList(between3);
+					break;
+				case 2:
+					userCouponRecords = userCouponRecordService.selectList(between2);
+					// 优惠券
+					break;
+				case 3:
+					// 司机奖励
+					driverActivityHistories = driverActivityHistoryService.selectList(between4);
+					break;
+				case 4:
+					// 专车订单
+					tOrderPrivateCars = orderPrivateCarService.selectList(between);
+					// 小件物流订单
+					tOrderLogistics = orderLogisticsService.selectList(between1);
+					break;
+			}
+		} else {
+			// 专车订单
+			tOrderPrivateCars = orderPrivateCarService.selectList(between);
+			// 小件物流订单
+			tOrderLogistics = orderLogisticsService.selectList(between1);
+			// 司机奖励
+			driverActivityHistories = driverActivityHistoryService.selectList(between4);
+			userCouponRecords = userCouponRecordService.selectList(between2);
+			userRedPacketRecords = userRedPacketRecordService.selectList(between3);
+		}
+		
+		// 已发放补贴总额
+		BigDecimal total = new BigDecimal("0");
+		// 已使用折扣总额(用户端)
+		BigDecimal discount = new BigDecimal("0");
+		// 已领取红包总额(用户端)
+		BigDecimal redPackage = new BigDecimal("0");
+		// 已领取优惠券总额(用户端)
+		BigDecimal coupon = new BigDecimal("0");
+		// 已领取司机奖励总额(司机端)
+		BigDecimal driver = new BigDecimal("0");
+		Map<Integer, TUser> userMap = appUserService.selectList(new EntityWrapper<TUser>())
+				.stream()
+				.collect(Collectors.toMap(TUser::getId, user -> user));
+		Map<Integer, TDriver> driverMap = driverService.selectList(new EntityWrapper<TDriver>())
+				.stream()
+				.collect(Collectors.toMap(TDriver::getId, user -> user));
+		Map<Integer, UserActivity> userActivityMap = userActivityService.selectList(new EntityWrapper<UserActivity>())
+				.stream()
+				.collect(Collectors.toMap(UserActivity::getId, user -> user));
+		Map<Integer, UserActivityDiscount1> userActivityDiscountMap = userActivityDiscount1Service.selectList(new EntityWrapper<UserActivityDiscount1>())
+				.stream()
+				.collect(Collectors.toMap(UserActivityDiscount1::getId, user -> user));
+		Map<Integer, UserActivityRedenvelope> userActivityRedenvelopeMap = userActivityRedenvelopeService.selectList(new EntityWrapper<UserActivityRedenvelope>())
+				.stream()
+				.collect(Collectors.toMap(UserActivityRedenvelope::getId, user -> user));
+		Map<Integer, SysCouponActivity> sysCouponActivityMap = sysCouponActivityService.selectList(new EntityWrapper<SysCouponActivity>())
+				.stream()
+				.collect(Collectors.toMap(SysCouponActivity::getId, user -> user));
+		// 查询已使用折扣总额
+		for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
+			if (tOrderPrivateCar.getDiscountMoney() == null || tOrderPrivateCar.getDiscountMoney() == 0) {
+				continue;
+			}
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
+			if (userActivityDiscount1 != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+		}
+		for (TOrderLogistics tOrderPrivateCar : tOrderLogistics) {
+			if (tOrderPrivateCar.getDiscountMoney() == null || tOrderPrivateCar.getDiscountMoney() == 0) {
+				continue;
+			}
+			
+			discount = discount.add(new BigDecimal(tOrderPrivateCar.getDiscountMoney().toString()));
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime()));
+			grantVO.setType("折扣");
+			
+			grantVO.setAmount(tOrderPrivateCar.getDiscountMoney().toString());
+			TUser tUser = userMap.get(tOrderPrivateCar.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			UserActivityDiscount1 userActivityDiscount1 = userActivityDiscountMap.get(tOrderPrivateCar.getActivityId());
+			if (userActivityDiscount1 != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityDiscount1.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+		}
+		// 查询已领取红包总额
+		for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userRedPacketRecord.getInsertTime()));
+			grantVO.setType("红包");
+			grantVO.setAmount(userRedPacketRecord.getMoney().toString());
+			TUser tUser = userMap.get(userRedPacketRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			if (userRedPacketRecord.getIsGrant() == 1) {
+				// 后台发放的红包
+				grantVO.setRemark("指定发放");
+			}
+			
+			
+			UserActivityRedenvelope userActivityRedenvelope = userActivityRedenvelopeMap.get(userRedPacketRecord.getRedPacketActivityId());
+			
+			if (userActivityRedenvelope != null) {
+				UserActivity userActivity = userActivityMap.get(userActivityRedenvelope.getUserActivityId());
+				if (userActivity != null) {
+					grantVO.setRemark(userActivity.getName());
+				}
+			}
+			res.add(grantVO);
+			redPackage = redPackage.add(new BigDecimal(userRedPacketRecord.getMoney().toString()));
+		}
+		// 查询已领取优惠券总额
+		for (UserCouponRecord userCouponRecord : userCouponRecords) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(userCouponRecord.getInsertTime()));
+			grantVO.setType("优惠券");
+			grantVO.setAmount(userCouponRecord.getMoney().toString());
+			TUser tUser = userMap.get(userCouponRecord.getUserId());
+			if (tUser != null) {
+				grantVO.setName(tUser.getNickName());
+			}
+			SysCouponActivity sysCouponActivity = sysCouponActivityMap.get(userCouponRecord.getCouponActivityId());
+			
+			if (sysCouponActivity != null) {
+				grantVO.setRemark(sysCouponActivity.getName());
+			}
+			coupon = coupon.add(new BigDecimal(userCouponRecord.getMoney().toString()));
+			res.add(grantVO);
+		}
+		// 已领取司机奖励
+		for (DriverActivityHistory driverActivityHistory : driverActivityHistories) {
+			GrantVO grantVO = new GrantVO();
+			grantVO.setInsertTime(format.format(driverActivityHistory.getInsertTime()));
+			grantVO.setType("司机奖励");
+			grantVO.setAmount(driverActivityHistory.getMoney().toString());
+			TDriver tDriver = driverMap.get(driverActivityHistory.getDriverId());
+			if (tDriver != null) {
+				grantVO.setName(tDriver.getFirstName() + tDriver.getLastName());
+			}
+			Integer type1 = driverActivityHistory.getType();
+			switch (type1) {
+				case 1:
+					grantVO.setRemark("邀请司机注册");
+					break;
+				case 2:
+					grantVO.setRemark("邀请用户注册");
+					break;
+				case 3:
+					grantVO.setRemark("累计在线");
+					break;
+				case 4:
+					grantVO.setRemark("订单量");
+					break;
+			}
+			driver = driver.add(new BigDecimal(driverActivityHistory.getMoney().toString()));
+			res.add(grantVO);
+		}
+		total = total.add(redPackage).add(coupon).add(discount).add(driver);
+		result.setTotal(total);
+		result.setDiscount(discount);
+		result.setCoupon(coupon);
+		result.setDriver(driver);
+		result.setRedPackage(redPackage);
+		return result;
+	}
 }

--
Gitblit v1.7.1