package com.stylefeng.guns.modular.system.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.vo.PlatformMoneyVO; import com.stylefeng.guns.modular.system.vo.PlatformVO; import com.stylefeng.guns.modular.system.vo.WaterMoneyVO; import com.stylefeng.guns.modular.system.vo.WaterVO; import io.swagger.models.auth.In; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; /** * 控制器 * * @author fengshuonan * @Date 2021-04-22 10:53:34 */ @Controller @RequestMapping("/platform") public class PlatformController extends BaseController { private String PREFIX = "/system/platform/"; @Autowired private IIncomeService tIncomeService; @Autowired private ITOrderPrivateCarService orderPrivateCarService; @Autowired private ITOrderLogisticsService orderLogisticsService; /** * 跳转到首页 */ @RequestMapping("/commission") public String index( Model model) { return PREFIX + "commission.html"; } @RequestMapping("/water") public String watter( Model model) { return PREFIX + "watter.html"; } @Autowired private IIncomeService incomeService; @Autowired private ISettlementRecordService settlementRecordService; @Autowired private ISettlementDetailService settlementDetailService; @Autowired private ITDriverService driverService; public static void main(String[] args) { // 获取今天的日期 LocalDate today = LocalDate.now(); // 获取本周第一天的日期和时间 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); // 获取本月第一天的日期和时间 LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth()); LocalDateTime startOfMonth = firstDayOfMonth.atStartOfDay(); // 获取本月最后一天的日期和时间 LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth()); LocalDateTime endOfMonth = lastDayOfMonth.atTime(LocalTime.MAX); // 获取本年第一天的日期和时间 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); } /** * * 计算金额 * @param time * @param insertTime * @param state * @return */ @RequestMapping(value = "/commission/getCount") @ResponseBody public Object getCount(Integer time,String insertTime,Integer state) { 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{ 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; } } List incomes = new ArrayList<>(); List settlementDetails = new ArrayList<>(); if (time == 5 && !StringUtils.hasLength(insertTime)){ incomes = tIncomeService.selectList(new EntityWrapper() .eq("userType", 1) .eq("objectId",1) .ne("type", 1) .isNotNull("orderType")); }else{ incomes = tIncomeService.selectList(new EntityWrapper() .eq("userType", 1) .eq("objectId",1) .ne("type", 1) .isNotNull("orderType") .between("insertTime", start, end)); } EntityWrapper settlementDetailEntityWrapper = new EntityWrapper<>(); settlementDetailEntityWrapper.between("createTime", start, end); if (state!=null && state == 2){ List paymentStatus = settlementRecordService.selectList(new EntityWrapper().eq("paymentStatus", 1)); if(paymentStatus.size() > 0){ settlementDetailEntityWrapper.in("settlementRecordId", paymentStatus.stream().map(SettlementRecord::getId).collect(Collectors.toList())); }else{ settlementDetailEntityWrapper.eq("settlementRecordId", 0); } }else if (state!=null && state == 1){ List paymentStatus = settlementRecordService.selectList(new EntityWrapper().eq("paymentStatus", 2)); if(paymentStatus.size() > 0){ settlementDetailEntityWrapper.in("settlementRecordId", paymentStatus.stream().map(SettlementRecord::getId).collect(Collectors.toList())); }else{ settlementDetailEntityWrapper.eq("settlementRecordId", 0); } } if (time == 5 && !StringUtils.hasLength(insertTime)){ }else{ settlementDetailEntityWrapper.between("createTime", start, end); } settlementDetails = settlementDetailService.selectList(settlementDetailEntityWrapper); List res = new ArrayList<>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map settlementRecordMap = settlementRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(SettlementRecord::getId, user -> user)); Map orderPrivateCarMap = orderPrivateCarService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TOrderPrivateCar::getId, user -> user)); Map orderLogisticsRecordMap = orderLogisticsService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TOrderLogistics::getId, user -> user)); // 已结算金额 BigDecimal balance = new BigDecimal("0"); // 未结算金额 BigDecimal unBalance = new BigDecimal("0"); // 查询所有已结算的订单 for (Income income : incomes) { PlatformVO platformVO = new PlatformVO(); platformVO.setState(1); switch (income.getOrderType()){ case 1: if (state!=null && state==2){ continue; } // 查询订单信息 // TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(income.getIncomeId()); TOrderPrivateCar tOrderPrivateCar = orderPrivateCarMap.get(income.getIncomeId()); if (tOrderPrivateCar==null){ continue; } platformVO.setMoney(new BigDecimal(income.getMoney())); if (tOrderPrivateCar.getState()!=10 && tOrderPrivateCar.getPayType() == null){ continue; } // 专车订单 balance = balance.add(new BigDecimal(income.getMoney())); res.add(platformVO); break; case 4: if (state!=null && state==2){ continue; } // 小件物流 // 查询订单信息 // TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(income.getIncomeId()); TOrderLogistics tOrderLogistics = orderLogisticsRecordMap.get(income.getIncomeId()); if (tOrderLogistics==null){ continue; } platformVO.setMoney(new BigDecimal(income.getMoney())); if (tOrderLogistics.getState()!=10 && tOrderLogistics.getPayType() == null){ continue; } // 专车订单 balance = balance.add(new BigDecimal(income.getMoney())); res.add(platformVO); break; } } // 查询所有现金支付的订单 for (SettlementDetail settlementDetail : settlementDetails) { PlatformVO platformVO = new PlatformVO(); switch (settlementDetail.getOrderType()){ case 1: // 专车订单 TOrderPrivateCar tOrderPrivateCar = orderPrivateCarMap.get(settlementDetail.getOrderId()); if (tOrderPrivateCar==null){ continue; } platformVO.setCode(tOrderPrivateCar.getOrderNum()); String string = settlementDetail.getPrice().toString(); BigDecimal bigDecimal1 = new BigDecimal(string); platformVO.setMoney(bigDecimal1); if (settlementDetail.getSettlementRecordId()!=null){ SettlementRecord settlementRecord = settlementRecordMap.get(settlementDetail.getSettlementRecordId()); if (settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus()==2){ if (state!=null && state!=1){ continue; } // 已结算 platformVO.setState(1); balance = balance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementRecord.getPayTime())); }else{ // 未结算 if (state!=null && state!=2){ continue; } platformVO.setState(2); unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } }else{ // 未结算 if (state!=null && state!=2){ continue; } unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } res.add(platformVO); break; case 4: // 小件物流 // 查询订单信息 TOrderLogistics tOrderLogistics = orderLogisticsRecordMap.get(settlementDetail.getOrderId()); if (tOrderLogistics==null){ continue; } String string1 = settlementDetail.getPrice().toString(); BigDecimal bigDecimal2 = new BigDecimal(string1); platformVO.setMoney(bigDecimal2); if (settlementDetail.getSettlementRecordId()!=null){ SettlementRecord settlementRecord = settlementRecordMap.get(settlementDetail.getSettlementRecordId()); if (settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus()==2){ if (state!=null && state!=1){ continue; } // 已结算 platformVO.setState(1); balance = balance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementRecord.getDay())); }else{ // 未结算 if (state!=null && state!=2){ continue; } platformVO.setState(2); unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementRecord.getDay())); } }else{ // 未结算 if (state!=null && state!=2){ continue; } unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } res.add(platformVO); break; } } PlatformMoneyVO platformMoneyVO = new PlatformMoneyVO(); // 计算佣金总额 BigDecimal add = unBalance.add(balance); BigDecimal bigDecimal = add.setScale(2, RoundingMode.HALF_UP); BigDecimal bigDecimal1 = unBalance.setScale(2, RoundingMode.HALF_UP); BigDecimal bigDecimal2 = balance.setScale(2, RoundingMode.HALF_UP); platformMoneyVO.setTotal(bigDecimal); platformMoneyVO.setBalance(bigDecimal2); platformMoneyVO.setUnBalance(bigDecimal1); return platformMoneyVO; } /** * 第三方流水统计 获取金额 * @param time * @param insertTime * @param * @return */ @RequestMapping(value = "/water/getCount") @ResponseBody public Object getCount1(Integer time,String insertTime,Integer payType,Integer type,String code) { if (payType!=null){ switch (payType){ case 1: payType = 2; break; case 2: payType = 1; break; } } 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; } } // 用户小件物流订单记录 List tOrderPrivateCars = new ArrayList<>(); List tOrderLogistics = new ArrayList<>(); // 用户取消订单记录 List orderCancels = new ArrayList<>(); // 用户充值 List tPubTransactionDetails = new ArrayList<>(); // 司机结算总额 List settlementDetails1 = new ArrayList<>(); // 司机提现 List driver = new ArrayList<>(); // 用户提现 List user = new ArrayList<>(); // 余额充值wrapper Wrapper orderType = new EntityWrapper(); // 用户提现wrapper Wrapper userWrapper = new EntityWrapper(); // 司机提现wrapper Wrapper between = new EntityWrapper(); // 用户专车订单wrapper EntityWrapper tOrderPrivateCarEntityWrapper = new EntityWrapper<>(); // 用户小件物流订单wrapper EntityWrapper tOrderLogisticsEntityWrapper = new EntityWrapper<>(); // 用户取消订单wrapper Wrapper orderCancelEntityWrapper = new EntityWrapper<>(); // 司机手动结算金额 Wrapper orderType1 = new EntityWrapper(); List integers = new ArrayList<>(); integers.add(1); integers.add(2); if (time == 5 && !StringUtils.hasLength(insertTime)){ // 余额充值wrapper orderType = new EntityWrapper() .eq("userType",1) .eq("orderType", 5) ; // 用户提现wrapper userWrapper = new EntityWrapper() .eq("state", 2) .eq("userType", 1) ; // 司机提现wrapper between = new EntityWrapper() .eq("state", 2) .eq("userType", 2); // 用户专车订单wrapper tOrderPrivateCarEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)); // 用户小件物流订单wrapper tOrderLogisticsEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)); // 司机手动结算金额 orderType1 = new EntityWrapper() .isNotNull("settlementRecordId") .in("orderType", Arrays.asList(1, 4)); // 用户取消订单费用 orderCancelEntityWrapper.eq("state", 2) .in("payType",integers) .eq("userType", 1); }else{ orderType = new EntityWrapper() .eq("orderType", 5) .eq("userType",1) .between("insertTime",start,end); // 用户提现wrapper userWrapper = new EntityWrapper() .eq("state", 2) .eq("userType", 1) .between("handleTime", start, end); // 司机提现wrapper between = new EntityWrapper() .eq("state", 2) .eq("userType", 2) .between("handleTime", start, end); // 司机手动结算金额 orderType1 = new EntityWrapper() .isNotNull("settlementRecordId") .in("orderType", Arrays.asList(1, 4)) .between("createTime", start, end); // 用户专车订单wrapper tOrderPrivateCarEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)) .between("insertTime", start, end); // 用户小件物流订单wrapper tOrderLogisticsEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)) .between("insertTime", start, end); // 用户取消订单费用 orderCancelEntityWrapper.eq("state", 2) .eq("userType", 1) .in("payType",integers) .between("insertTime", start, end); } if (type != null){ switch (type){ case 1: // 只查询用户订单 tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper); tOrderLogistics = orderLogisticsService.selectList(tOrderLogisticsEntityWrapper); orderCancels = orderCancelService.selectList(orderCancelEntityWrapper); break; case 2: // 只查询用户充值 tPubTransactionDetails = pubTransactionDetailsService.selectList(orderType); break; case 3: // 只查询司机手动结算的 settlementDetails1 = settlementDetailService.selectList(orderType1); break; case 4: driver = pubWithdrawalService.selectList(between); // 只查询司机提现 break; case 5: // 只查询用户提现 user = pubWithdrawalService.selectList(userWrapper); break; } }else{ if(ToolUtil.isNotEmpty(code)){ tOrderPrivateCarEntityWrapper.like("orderNum", code); tOrderLogisticsEntityWrapper.like("orderNum", code); orderType.like("", code); } // 只查询用户订单 tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper); tOrderLogistics = orderLogisticsService.selectList(tOrderLogisticsEntityWrapper); orderCancels = orderCancelService.selectList(orderCancelEntityWrapper); tPubTransactionDetails = pubTransactionDetailsService.selectList(orderType); // 只查询司机手动结算的 settlementDetails1 = settlementDetailService.selectList(orderType1); driver = pubWithdrawalService.selectList(between); user = pubWithdrawalService.selectList(userWrapper); } List res = new ArrayList<>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 司机结算金额 BigDecimal balance = new BigDecimal("0"); // 用户消费金额 BigDecimal userConsume = new BigDecimal("0"); // 用户充值金额 BigDecimal userRecharge = new BigDecimal("0"); // 司机提现金额 BigDecimal driverWithdrawal = new BigDecimal("0"); // 用户提现金额 BigDecimal userWithdrawal = new BigDecimal("0"); // 用户订单消费 Map userMap = appUserService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TUser::getId, user1 -> user1)); Map driverMap = driverService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TDriver::getId, user1 -> user1)); Map paymentRecordMap = paymentRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(PaymentRecord::getId, user1 -> user1)); Map settlementRecordMap = settlementRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(SettlementRecord::getId, user1 -> user1)); // 用户订单消费 for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) { if (payType!=null){ if (tOrderPrivateCar.getPayType()!=payType){ continue; } } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); waterVO.setType("用户订单消费"); switch (tOrderPrivateCar.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; } // 专车 waterVO.setCode(tOrderPrivateCar.getOrderNum()); String string = tOrderPrivateCar.getPayMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user1 = userMap.get(tOrderPrivateCar.getUserId()); if (user1!=null){ waterVO.setName(user1.getNickName()); waterVO.setPhone(user1.getPhone()); } if (tOrderPrivateCar != null){ waterVO.setRemark(tOrderPrivateCar.getRemark()); } res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); } for (TOrderLogistics tOrderLogistic : tOrderLogistics) { if (payType!=null){ if (tOrderLogistic.getPayType()!=payType){ continue; } } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tOrderLogistic.getInsertTime())); waterVO.setType("用户订单消费"); // 小件物流 waterVO.setCode(tOrderLogistic.getOrderNum()); String string = tOrderLogistic.getPayMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user2 = userMap.get(tOrderLogistic.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } waterVO.setType("用户订单消费"); switch (tOrderLogistic.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; } if (tOrderLogistics != null){ waterVO.setRemark(tOrderLogistic.getRemark()); } res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); } for (OrderCancel orderCancel : orderCancels) { WaterVO waterVO = new WaterVO(); switch (orderCancel.getOrderType()){ case 1: TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(orderCancel.getOrderId()); if (tOrderPrivateCar == null){ continue; } waterVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); waterVO.setType("用户订单消费"); if (payType!=null){ if (!Objects.equals(tOrderPrivateCar.getPayType(), payType)){ continue; } } switch (orderCancel.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; case 3: waterVO.setPayType("余额支付"); break; } // 专车 waterVO.setCode(tOrderPrivateCar.getOrderNum()); String string = orderCancel.getMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user1 = userMap.get(tOrderPrivateCar.getUserId()); if (user1!=null){ waterVO.setName(user1.getNickName()); waterVO.setPhone(user1.getPhone()); } waterVO.setRemark(tOrderPrivateCar.getRemark()); res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); break; case 4: TOrderLogistics tOrderLogistics1 = orderLogisticsService.selectById(orderCancel.getOrderId()); if (payType!=null){ if (!Objects.equals(tOrderLogistics1.getPayType(), payType)){ continue; } } WaterVO waterVO1 = new WaterVO(); waterVO1.setInsertTime(format.format(tOrderLogistics1.getInsertTime())); waterVO1.setType("用户订单消费"); // 小件物流 waterVO1.setCode(tOrderLogistics1.getOrderNum()); String string1 = orderCancel.getMoney().toString(); waterVO1.setMoney(new BigDecimal(string1)+""); TUser user2 = userMap.get(tOrderLogistics1.getUserId()); if (user2!=null){ waterVO1.setName(user2.getNickName()); waterVO1.setPhone(user2.getPhone()); } waterVO1.setType("用户订单消费"); switch (orderCancel.getPayType()){ case 1: waterVO1.setPayType("手机支付"); break; case 2: waterVO1.setPayType("银行卡支付"); break; case 3: waterVO1.setPayType("余额支付"); break; } waterVO1.setRemark(tOrderLogistics1.getRemark()); res.add(waterVO1); userConsume = userConsume.add(new BigDecimal(waterVO1.getMoney())); break; } } // 司机提现 for (TPubWithdrawal tPubWithdrawal : driver) { if(payType!=null && payType == 2){ break; } String code1 = tPubWithdrawal.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tPubWithdrawal.getHandleTime())); waterVO.setCode(tPubWithdrawal.getCode()); TDriver tDriver = driverMap.get(tPubWithdrawal.getUserId()); if (tDriver!=null){ waterVO.setName(tDriver.getFirstName()+tDriver.getLastName()); waterVO.setPhone(tDriver.getPhone()); } waterVO.setMoney("-"+tPubWithdrawal.getMoney()); waterVO.setPayType("手机支付"); waterVO.setType("司机提现"); waterVO.setRemark(tPubWithdrawal.getRemark()); res.add(waterVO); driverWithdrawal = driverWithdrawal.add(tPubWithdrawal.getMoney()); } // 用户提现 for (TPubWithdrawal tPubWithdrawal : user) { if(payType!=null && payType == 2){ break; } String code1 = tPubWithdrawal.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tPubWithdrawal.getHandleTime())); waterVO.setCode(tPubWithdrawal.getCode()); TUser user2 = userMap.get(tPubWithdrawal.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } waterVO.setMoney("-"+tPubWithdrawal.getMoney()); waterVO.setPayType("手机支付"); waterVO.setType("用户提现"); waterVO.setRemark(tPubWithdrawal.getRemark()); res.add(waterVO); userWithdrawal = userWithdrawal.add(tPubWithdrawal.getMoney()); } // 查询用户充值 for (TPubTransactionDetails tPubTransactionDetail : tPubTransactionDetails) { WaterVO waterVO = new WaterVO(); Integer orderId = tPubTransactionDetail.getOrderId(); PaymentRecord paymentRecord = paymentRecordMap.get(orderId); if (paymentRecord!=null){ if (paymentRecord.getState() == 1){ // 临时数据 continue; } String code1 = paymentRecord.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } waterVO.setInsertTime(format.format(paymentRecord.getInsertTime())); waterVO.setCode(paymentRecord.getCode()); if (paymentRecord.getPayType()!=null){ switch (paymentRecord.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } waterVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } waterVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } } waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString())+""); }else{ continue; } if (paymentRecord.getUserId()!=null){ TUser user2 = userMap.get(paymentRecord.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } } waterVO.setType("用户充值"); waterVO.setRemark(tPubTransactionDetail.getRemark()); res.add(waterVO); userRecharge = userRecharge.add(new BigDecimal(paymentRecord.getAmount().toString())); } // 查询所有已结算的订单 for (SettlementDetail income : settlementDetails1) { WaterVO platformVO = new WaterVO(); platformVO.setType("司机结算"); switch (income.getOrderType()){ case 1: SettlementRecord settlementRecord = settlementRecordMap.get(income.getSettlementRecordId()); if (settlementRecord!=null && settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus() == 2){ if (settlementRecord.getPayType()!=null){ switch (settlementRecord.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } } }else{ continue; } // 查询订单信息 TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(income.getOrderId()); if (tOrderPrivateCar==null){ continue; } String code1 = tOrderPrivateCar.getOrderNum(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } platformVO.setCode(tOrderPrivateCar.getOrderNum()); TDriver tDriver = driverMap.get(tOrderPrivateCar.getDriverId()); if (tDriver != null){ platformVO.setName(tDriver.getFirstName()+tDriver.getLastName()); platformVO.setPhone(tDriver.getPhone()); } platformVO.setRemark(tOrderPrivateCar.getRemark()); if (income.getCreateTime()!=null){ platformVO.setInsertTime(format.format(income.getCreateTime())); } platformVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); if (income.getPrice() != null){ String string = income.getPrice().toString(); BigDecimal bigDecimal1 = new BigDecimal(string); platformVO.setMoney(bigDecimal1+""); }else{ continue; } if (tOrderPrivateCar.getPayType() == null){ continue; } // 专车订单 String string4 = tOrderPrivateCar.getOrderMoney().toString(); balance = balance.add(new BigDecimal(string4)); res.add(platformVO); break; case 4: // 小件物流 // 查询订单信息 SettlementRecord settlementRecord1 = settlementRecordMap.get(income.getSettlementRecordId()); if (settlementRecord1!=null){ if (settlementRecord1.getPaymentStatus()!=null && settlementRecord1.getPaymentStatus() == 2){ switch (settlementRecord1.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } }else{ continue; } }else{ continue; } TOrderLogistics tOrderLogistics1 = orderLogisticsService.selectById(income.getOrderId()); if (tOrderLogistics1==null){ continue; } switch (tOrderLogistics1.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } String code2 = tOrderLogistics1.getOrderNum(); if(ToolUtil.isNotEmpty(code) && !code2.contains(code)){ continue; } platformVO.setCode(tOrderLogistics1.getOrderNum()); TDriver tDriver1 = driverMap.get(tOrderLogistics1.getDriverId()); if (tDriver1!=null){ platformVO.setName(tDriver1.getFirstName()+tDriver1.getLastName()); platformVO.setPhone(tDriver1.getPhone()); } platformVO.setRemark(tOrderLogistics1.getRemark()); platformVO.setMoney(BigDecimal.valueOf(income.getPrice())+""); if (income.getCreateTime()!=null){ platformVO.setInsertTime(format.format(income.getCreateTime())); } platformVO.setInsertTime(format.format(tOrderLogistics1.getInsertTime())); if (tOrderLogistics1.getPayType() == null){ continue; } String string1 = tOrderLogistics1.getOrderMoney().toString(); // 小件物流订单 balance = balance.add(new BigDecimal(string1)); res.add(platformVO); break; } } // 过滤掉res中insertTime未空的数据 res.removeIf(waterVO -> waterVO.getInsertTime() == null); Collections.sort(res, Comparator.comparing(WaterVO::getInsertTime).reversed()); WaterMoneyVO waterMoneyVO = new WaterMoneyVO(); BigDecimal add = userRecharge.add(userConsume).add(balance).subtract(driverWithdrawal).subtract(userWithdrawal); waterMoneyVO.setTotal(add); waterMoneyVO.setUserOrder(userConsume); waterMoneyVO.setUserCharge(userRecharge); waterMoneyVO.setBalance(balance); waterMoneyVO.setDriverWithdrawal(driverWithdrawal); waterMoneyVO.setUserWithdrawal(userWithdrawal); return waterMoneyVO; } /** * 第三方流水统计获取列表 */ @Autowired private ITPubTransactionDetailsService pubTransactionDetailsService; @Autowired private ITPubWithdrawalService pubWithdrawalService; @Autowired private IPaymentRecordService paymentRecordService; @Autowired private ITUserService appUserService; @Autowired private IOrderCancelService orderCancelService; @RequestMapping(value = "/water/list") @ResponseBody public Object list1(Integer time,String insertTime,Integer payType,Integer type, String code) { if (payType!=null){ switch (payType){ case 1: payType = 2; break; case 2: payType = 1; break; } } 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; } } // 用户小件物流订单记录 List tOrderPrivateCars = new ArrayList<>(); List tOrderLogistics = new ArrayList<>(); // 用户取消订单记录 List orderCancels = new ArrayList<>(); // 用户充值 List tPubTransactionDetails = new ArrayList<>(); // 司机结算总额 List settlementDetails1 = new ArrayList<>(); // 司机提现 List driver = new ArrayList<>(); // 用户提现 List user = new ArrayList<>(); // 余额充值wrapper Wrapper orderType = new EntityWrapper(); // 用户提现wrapper Wrapper userWrapper = new EntityWrapper(); // 司机提现wrapper Wrapper between = new EntityWrapper(); // 用户专车订单wrapper EntityWrapper tOrderPrivateCarEntityWrapper = new EntityWrapper<>(); // 用户小件物流订单wrapper EntityWrapper tOrderLogisticsEntityWrapper = new EntityWrapper<>(); // 用户取消订单wrapper Wrapper orderCancelEntityWrapper = new EntityWrapper<>(); // 司机手动结算金额 Wrapper orderType1 = new EntityWrapper(); List integers = new ArrayList<>(); integers.add(1); integers.add(2); if (time == 5 && !StringUtils.hasLength(insertTime)){ // 余额充值wrapper orderType = new EntityWrapper() .eq("userType",1) .eq("orderType", 5) ; // 用户提现wrapper userWrapper = new EntityWrapper() .eq("state", 2) .eq("userType", 1) ; // 司机提现wrapper between = new EntityWrapper() .eq("state", 2) .eq("userType", 2); // 用户专车订单wrapper tOrderPrivateCarEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)); // 用户小件物流订单wrapper tOrderLogisticsEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)); // 司机手动结算金额 orderType1 = new EntityWrapper() .isNotNull("settlementRecordId") .in("orderType", Arrays.asList(1, 4)); // 用户取消订单费用 orderCancelEntityWrapper.eq("state", 2) .in("payType",integers) .eq("userType", 1) ; }else{ orderType = new EntityWrapper() .eq("orderType", 5) .eq("userType",1) .between("insertTime",start,end); // 用户提现wrapper userWrapper = new EntityWrapper() .eq("state", 2) .eq("userType", 1) .between("handleTime", start, end); // 司机提现wrapper between = new EntityWrapper() .eq("state", 2) .eq("userType", 2) .between("handleTime", start, end); // 司机手动结算金额 orderType1 = new EntityWrapper() .isNotNull("settlementRecordId") .in("orderType", Arrays.asList(1, 4)) .between("createTime", start, end); // 用户专车订单wrapper tOrderPrivateCarEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)) .between("insertTime", start, end); // 用户小件物流订单wrapper tOrderLogisticsEntityWrapper .isNotNull("payMoney") .in("payType",Arrays.asList(1, 2)) .between("insertTime", start, end); // 用户取消订单费用 orderCancelEntityWrapper.eq("state", 2) .eq("userType", 1) .in("payType",integers) .between("insertTime", start, end); } if (type != null){ switch (type){ case 1: // 只查询用户订单 tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper); tOrderLogistics = orderLogisticsService.selectList(tOrderLogisticsEntityWrapper); orderCancels = orderCancelService.selectList(orderCancelEntityWrapper); break; case 2: // 只查询用户充值 tPubTransactionDetails = pubTransactionDetailsService.selectList(orderType); break; case 3: // 只查询司机手动结算的 settlementDetails1 = settlementDetailService.selectList(orderType1); break; case 4: driver = pubWithdrawalService.selectList(between); // 只查询司机提现 break; case 5: // 只查询用户提现 user = pubWithdrawalService.selectList(userWrapper); break; } }else{ if(ToolUtil.isNotEmpty(code)){ tOrderPrivateCarEntityWrapper.like("orderNum", code); tOrderLogisticsEntityWrapper.like("orderNum", code); orderType.like("", code); } // 只查询用户订单 tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper); tOrderLogistics = orderLogisticsService.selectList(tOrderLogisticsEntityWrapper); orderCancels = orderCancelService.selectList(orderCancelEntityWrapper); tPubTransactionDetails = pubTransactionDetailsService.selectList(orderType); // 只查询司机手动结算的 settlementDetails1 = settlementDetailService.selectList(orderType1); driver = pubWithdrawalService.selectList(between); user = pubWithdrawalService.selectList(userWrapper); } List res = new ArrayList<>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 司机结算金额 BigDecimal balance = new BigDecimal("0"); // 用户消费金额 BigDecimal userConsume = new BigDecimal("0"); // 用户充值金额 BigDecimal userRecharge = new BigDecimal("0"); // 司机提现金额 BigDecimal driverWithdrawal = new BigDecimal("0"); // 用户提现金额 BigDecimal userWithdrawal = new BigDecimal("0"); // 用户订单消费 Map userMap = appUserService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TUser::getId, user1 -> user1)); Map driverMap = driverService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TDriver::getId, user1 -> user1)); Map paymentRecordMap = paymentRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(PaymentRecord::getId, user1 -> user1)); Map settlementRecordMap = settlementRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(SettlementRecord::getId, user1 -> user1)); // 用户订单消费 for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) { if (payType!=null){ if (tOrderPrivateCar.getPayType()!=payType){ continue; } } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); waterVO.setType("用户订单消费"); switch (tOrderPrivateCar.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; } // 专车 waterVO.setCode(tOrderPrivateCar.getOrderNum()); String string = tOrderPrivateCar.getPayMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user1 = userMap.get(tOrderPrivateCar.getUserId()); if (user1!=null){ waterVO.setName(user1.getNickName()); waterVO.setPhone(user1.getPhone()); } if (tOrderPrivateCar != null){ waterVO.setRemark(tOrderPrivateCar.getRemark()); } res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); } for (TOrderLogistics tOrderLogistic : tOrderLogistics) { if (payType!=null){ if (tOrderLogistic.getPayType()!=payType){ continue; } } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tOrderLogistic.getInsertTime())); waterVO.setType("用户订单消费"); // 小件物流 waterVO.setCode(tOrderLogistic.getOrderNum()); String string = tOrderLogistic.getPayMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user2 = userMap.get(tOrderLogistic.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } waterVO.setType("用户订单消费"); switch (tOrderLogistic.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; } if (tOrderLogistics != null){ waterVO.setRemark(tOrderLogistic.getRemark()); } res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); } for (OrderCancel orderCancel : orderCancels) { WaterVO waterVO = new WaterVO(); switch (orderCancel.getOrderType()){ case 1: TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(orderCancel.getOrderId()); if (tOrderPrivateCar == null){ continue; } waterVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); waterVO.setType("用户订单消费"); if (payType!=null){ if (!Objects.equals(tOrderPrivateCar.getPayType(), payType)){ continue; } } switch (orderCancel.getPayType()){ case 1: waterVO.setPayType("手机支付"); break; case 2: waterVO.setPayType("银行卡支付"); break; case 3: waterVO.setPayType("余额支付"); break; } // 专车 waterVO.setCode(tOrderPrivateCar.getOrderNum()); String string = orderCancel.getMoney().toString(); waterVO.setMoney(new BigDecimal(string)+""); TUser user1 = userMap.get(orderCancel.getUserId()); if (user1!=null){ waterVO.setName(user1.getNickName()); waterVO.setPhone(user1.getPhone()); } waterVO.setRemark(tOrderPrivateCar.getRemark()); res.add(waterVO); userConsume = userConsume.add(new BigDecimal(waterVO.getMoney())); break; case 4: TOrderLogistics tOrderLogistics1 = orderLogisticsService.selectById(orderCancel.getOrderId()); if (payType!=null){ if (!Objects.equals(tOrderLogistics1.getPayType(), payType)){ continue; } } WaterVO waterVO1 = new WaterVO(); waterVO1.setInsertTime(format.format(tOrderLogistics1.getInsertTime())); waterVO1.setType("用户订单消费"); // 小件物流 waterVO1.setCode(tOrderLogistics1.getOrderNum()); String string1 = orderCancel.getMoney().toString(); waterVO1.setMoney(new BigDecimal(string1)+""); TUser user2 = userMap.get(tOrderLogistics1.getUserId()); if (user2!=null){ waterVO1.setName(user2.getNickName()); waterVO1.setPhone(user2.getPhone()); } waterVO1.setType("用户订单消费"); switch (orderCancel.getPayType()){ case 1: waterVO1.setPayType("手机支付"); break; case 2: waterVO1.setPayType("银行卡支付"); break; case 3: waterVO1.setPayType("余额支付"); break; } waterVO1.setRemark(tOrderLogistics1.getRemark()); res.add(waterVO1); userConsume = userConsume.add(new BigDecimal(waterVO1.getMoney())); break; } } // 司机提现 for (TPubWithdrawal tPubWithdrawal : driver) { if(payType!=null && payType == 2){ break; } String code1 = tPubWithdrawal.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tPubWithdrawal.getHandleTime())); waterVO.setCode(tPubWithdrawal.getCode()); TDriver tDriver = driverMap.get(tPubWithdrawal.getUserId()); if (tDriver!=null){ waterVO.setName(tDriver.getFirstName()+tDriver.getLastName()); waterVO.setPhone(tDriver.getPhone()); } waterVO.setMoney("-"+tPubWithdrawal.getMoney()); waterVO.setPayType("手机支付"); waterVO.setType("司机提现"); waterVO.setRemark(tPubWithdrawal.getRemark()); res.add(waterVO); driverWithdrawal = driverWithdrawal.add(tPubWithdrawal.getMoney()); } // 用户提现 for (TPubWithdrawal tPubWithdrawal : user) { if(payType!=null && payType == 2){ break; } String code1 = tPubWithdrawal.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } WaterVO waterVO = new WaterVO(); waterVO.setInsertTime(format.format(tPubWithdrawal.getHandleTime())); waterVO.setCode(tPubWithdrawal.getCode()); TUser user2 = userMap.get(tPubWithdrawal.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } waterVO.setMoney("-"+tPubWithdrawal.getMoney()); waterVO.setPayType("手机支付"); waterVO.setType("用户提现"); waterVO.setRemark(tPubWithdrawal.getRemark()); res.add(waterVO); userWithdrawal = userWithdrawal.add(tPubWithdrawal.getMoney()); } // 查询用户充值 for (TPubTransactionDetails tPubTransactionDetail : tPubTransactionDetails) { WaterVO waterVO = new WaterVO(); Integer orderId = tPubTransactionDetail.getOrderId(); PaymentRecord paymentRecord = paymentRecordMap.get(orderId); if (paymentRecord!=null){ if (paymentRecord.getState() == 1){ // 临时数据 continue; } String code1 = paymentRecord.getCode(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } waterVO.setInsertTime(format.format(paymentRecord.getInsertTime())); waterVO.setCode(paymentRecord.getCode()); if (paymentRecord.getPayType()!=null){ switch (paymentRecord.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } waterVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } waterVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } } waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString())+""); }else{ continue; } if (paymentRecord.getUserId()!=null){ TUser user2 = userMap.get(paymentRecord.getUserId()); if (user2!=null){ waterVO.setName(user2.getNickName()); waterVO.setPhone(user2.getPhone()); } } waterVO.setType("用户充值"); waterVO.setRemark(tPubTransactionDetail.getRemark()); res.add(waterVO); userRecharge = userRecharge.add(new BigDecimal(paymentRecord.getAmount().toString())); } // 查询所有已结算的订单 for (SettlementDetail income : settlementDetails1) { WaterVO platformVO = new WaterVO(); platformVO.setType("司机结算"); switch (income.getOrderType()){ case 1: SettlementRecord settlementRecord = settlementRecordMap.get(income.getSettlementRecordId()); if (settlementRecord!=null && settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus() == 2){ if (settlementRecord.getPayType()!=null){ switch (settlementRecord.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } } }else{ continue; } // 查询订单信息 TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(income.getOrderId()); if (tOrderPrivateCar==null){ continue; } String code1 = tOrderPrivateCar.getOrderNum(); if(ToolUtil.isNotEmpty(code) && !code1.contains(code)){ continue; } platformVO.setCode(tOrderPrivateCar.getOrderNum()); TDriver tDriver = driverMap.get(tOrderPrivateCar.getDriverId()); if (tDriver != null){ platformVO.setName(tDriver.getFirstName()+tDriver.getLastName()); platformVO.setPhone(tDriver.getPhone()); } platformVO.setRemark(tOrderPrivateCar.getRemark()); if (income.getCreateTime()!=null){ platformVO.setInsertTime(format.format(income.getCreateTime())); } platformVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); if (income.getPrice() != null){ String string = income.getPrice().toString(); BigDecimal bigDecimal1 = new BigDecimal(string); platformVO.setMoney(bigDecimal1+""); }else{ continue; } if (tOrderPrivateCar.getPayType() == null){ continue; } // 专车订单 String string4 = tOrderPrivateCar.getOrderMoney().toString(); balance = balance.add(new BigDecimal(string4)); res.add(platformVO); break; case 4: // 小件物流 // 查询订单信息 SettlementRecord settlementRecord1 = settlementRecordMap.get(income.getSettlementRecordId()); if (settlementRecord1!=null){ if (settlementRecord1.getPaymentStatus()!=null && settlementRecord1.getPaymentStatus() == 2){ switch (settlementRecord1.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: continue; } }else{ continue; } }else{ continue; } TOrderLogistics tOrderLogistics1 = orderLogisticsService.selectById(income.getOrderId()); if (tOrderLogistics1==null){ continue; } switch (tOrderLogistics1.getPayType()){ case 1: if (payType!=null){ if (payType != 1){ continue; } } platformVO.setPayType("手机支付"); break; case 2: if (payType!=null){ if (payType != 2){ continue; } } platformVO.setPayType("银行卡支付"); break; case 3: case 4: ; } String code2 = tOrderLogistics1.getOrderNum(); if(ToolUtil.isNotEmpty(code) && !code2.contains(code)){ continue; } platformVO.setCode(tOrderLogistics1.getOrderNum()); TDriver tDriver1 = driverMap.get(tOrderLogistics1.getDriverId()); if (tDriver1!=null){ platformVO.setName(tDriver1.getFirstName()+tDriver1.getLastName()); platformVO.setPhone(tDriver1.getPhone()); } platformVO.setRemark(tOrderLogistics1.getRemark()); platformVO.setMoney(BigDecimal.valueOf(income.getPrice())+""); if (income.getCreateTime()!=null){ platformVO.setInsertTime(format.format(income.getCreateTime())); } platformVO.setInsertTime(format.format(tOrderLogistics1.getInsertTime())); if (tOrderLogistics1.getPayType() == null){ continue; } String string1 = tOrderLogistics1.getOrderMoney().toString(); // 小件物流订单 balance = balance.add(new BigDecimal(string1)); res.add(platformVO); break; } } // 计算佣金总额 // BigDecimal add = unBalance.add(balance); Collections.sort(res, Comparator.comparing(WaterVO::getInsertTime).reversed()); return res; } /** * 获取列表 */ @RequestMapping(value = "/commission/list") @ResponseBody public Object list(Integer time,String insertTime,Integer state) { 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{ 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; } } Page> page = new PageFactory>().defaultPage(); List incomes = new ArrayList<>(); List settlementDetails = new ArrayList<>(); if (time == 5 && !StringUtils.hasLength(insertTime)){ incomes = tIncomeService.selectList(new EntityWrapper() .eq("userType", 1) .eq("objectId",1) .ne("type", 1) .isNotNull("orderType")); }else{ incomes = tIncomeService.selectList(new EntityWrapper() .eq("userType", 1) .eq("objectId",1) .ne("type", 1) .isNotNull("orderType") .between("insertTime", start, end)); } EntityWrapper settlementDetailEntityWrapper = new EntityWrapper<>(); settlementDetailEntityWrapper.between("createTime", start, end); if (state!=null && state == 2){ List paymentStatus = settlementRecordService.selectList(new EntityWrapper().eq("paymentStatus", 1)); if(paymentStatus.size() > 0){ settlementDetailEntityWrapper.in("settlementRecordId", paymentStatus.stream().map(SettlementRecord::getId).collect(Collectors.toList())); }else{ settlementDetailEntityWrapper.eq("settlementRecordId", 0); } }else if (state!=null && state == 1){ List paymentStatus = settlementRecordService.selectList(new EntityWrapper().eq("paymentStatus", 2)); if(paymentStatus.size() > 0){ settlementDetailEntityWrapper.in("settlementRecordId", paymentStatus.stream().map(SettlementRecord::getId).collect(Collectors.toList())); }else{ settlementDetailEntityWrapper.eq("settlementRecordId", 0); } } if (time == 5 && !StringUtils.hasLength(insertTime)){ }else{ settlementDetailEntityWrapper.between("createTime", start, end); } settlementDetails = settlementDetailService.selectList(settlementDetailEntityWrapper); List res = new ArrayList<>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map userMap = appUserService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TUser::getId, user -> user)); Map driverMap = driverService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TDriver::getId, user -> user)); Map settlementRecordMap = settlementRecordService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(SettlementRecord::getId, user -> user)); Map settlementDetailMap = settlementDetailService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(SettlementDetail::getId, user -> user)); Map orderPrivateCarMap = orderPrivateCarService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TOrderPrivateCar::getId, user -> user)); Map orderLogisticsRecordMap = orderLogisticsService.selectList(new EntityWrapper()) .stream() .collect(Collectors.toMap(TOrderLogistics::getId, user -> user)); // 专车取消订单 Map orderCancelRecordMap1 = orderCancelService.selectList(new EntityWrapper() .eq("orderType",1) .eq("state",2) .isNotNull("payType") .isNotNull("money") ) .stream() .collect(Collectors.toMap(OrderCancel::getOrderId, user -> user)); // 小件物流取消 Map orderCancelRecordMap2 = orderCancelService.selectList(new EntityWrapper() .eq("state",2) .isNotNull("payType") .isNotNull("money") .eq("orderType",4) ) .stream() .collect(Collectors.toMap(OrderCancel::getOrderId, user -> user)); // 已结算金额 BigDecimal balance = new BigDecimal("0"); // 未结算金额 BigDecimal unBalance = new BigDecimal("0"); // 查询所有已结算的订单 for (Income income : incomes) { PlatformVO platformVO = new PlatformVO(); platformVO.setState(1); switch (income.getOrderType()){ case 1: if (state!=null && state==2){ continue; } // 查询订单信息 TOrderPrivateCar tOrderPrivateCar = orderPrivateCarMap.get(income.getIncomeId()); if (tOrderPrivateCar==null){ continue; } platformVO.setCode(tOrderPrivateCar.getOrderNum()); TDriver tDriver = driverMap.get(tOrderPrivateCar.getDriverId()); if (tDriver != null){ platformVO.setDriverName(tDriver.getFirstName()+tDriver.getLastName()); platformVO.setDriverPhone(tDriver.getPhone()); } platformVO.setRemark(tOrderPrivateCar.getRemark()); if (income.getInsertTime()!=null){ platformVO.setEndTime(format.format(income.getInsertTime())); } platformVO.setMoney(new BigDecimal(income.getMoney())); platformVO.setInsertTime(format.format(income.getInsertTime())); if (tOrderPrivateCar.getState()!=10 && tOrderPrivateCar.getPayType() == null){ continue; } if (tOrderPrivateCar.getState() == 10){ // 查询取消订单 用户支付方式 OrderCancel orderCancel = orderCancelRecordMap1.get(tOrderPrivateCar.getId()); if (orderCancel!=null &&orderCancel.getPayType()!=null){ switch (orderCancel.getPayType()){ case 1: platformVO.setPayType("手机支付"); break; case 2: platformVO.setPayType("银行卡支付"); break; case 3: platformVO.setPayType("余额支付"); break; } } }else{ if (tOrderPrivateCar.getPayType()!=null){ switch (tOrderPrivateCar.getPayType()){ case 1: platformVO.setPayType("手机支付"); break; case 2: platformVO.setPayType("银行卡支付"); break; case 3: platformVO.setPayType("余额支付"); break; case 4: platformVO.setPayType("现金支付"); break; } } } // 专车订单 balance = balance.add(new BigDecimal(income.getMoney())); res.add(platformVO); break; case 4: if (state!=null && state==2){ continue; } // 小件物流 // 查询订单信息 // TOrderLogistics tOrderLogistics = orderLogisticsRecordMap.get(income.getIncomeId()); if (tOrderLogistics==null){ continue; } platformVO.setCode(tOrderLogistics.getOrderNum()); TDriver tDriver1 = driverMap.get(tOrderLogistics.getDriverId()); if (tDriver1!=null){ platformVO.setDriverName(tDriver1.getFirstName()+tDriver1.getLastName()); platformVO.setDriverPhone(tDriver1.getPhone()); } platformVO.setRemark(tOrderLogistics.getRemark()); platformVO.setMoney(new BigDecimal(income.getMoney())); if (income.getInsertTime()!=null){ platformVO.setEndTime(format.format(income.getInsertTime())); } platformVO.setInsertTime(format.format(tOrderLogistics.getInsertTime())); if (tOrderLogistics.getState()!=10 && tOrderLogistics.getPayType() == null){ continue; } if (tOrderLogistics.getState() == 10){ // 查询取消订单 用户支付方式 OrderCancel orderCancel = orderCancelRecordMap2.get(tOrderLogistics.getId()); if (orderCancel!=null &&orderCancel.getPayType()!=null){ switch (orderCancel.getPayType()){ case 1: platformVO.setPayType("手机支付"); break; case 2: platformVO.setPayType("银行卡支付"); break; case 3: platformVO.setPayType("余额支付"); break; } } }else{ if (tOrderLogistics.getPayType()!=null){ switch (tOrderLogistics.getPayType()){ case 1: platformVO.setPayType("手机支付"); break; case 2: platformVO.setPayType("银行卡支付"); break; case 3: platformVO.setPayType("余额支付"); break; case 4: platformVO.setPayType("现金支付"); break; } } } // 专车订单 balance = balance.add(new BigDecimal(income.getMoney())); res.add(platformVO); break; } } // 查询所有现金支付的订单 for (SettlementDetail settlementDetail : settlementDetails) { PlatformVO platformVO = new PlatformVO(); switch (settlementDetail.getOrderType()){ case 1: // 专车订单 TOrderPrivateCar tOrderPrivateCar = orderPrivateCarMap.get(settlementDetail.getOrderId()); if (tOrderPrivateCar==null){ continue; } platformVO.setCode(tOrderPrivateCar.getOrderNum()); TDriver tDriver = driverMap.get(tOrderPrivateCar.getDriverId()); if (tDriver!=null){ platformVO.setDriverName(tDriver.getFirstName()+tDriver.getLastName()); platformVO.setDriverPhone(tDriver.getPhone()); } platformVO.setRemark(tOrderPrivateCar.getRemark()); platformVO.setInsertTime(format.format(tOrderPrivateCar.getInsertTime())); String string = settlementDetail.getPrice().toString(); BigDecimal bigDecimal1 = new BigDecimal(string); platformVO.setMoney(bigDecimal1); platformVO.setPayType("现金支付"); if (settlementDetail.getSettlementRecordId()!=null){ SettlementRecord settlementRecord = settlementRecordMap.get(settlementDetail.getSettlementRecordId()); if (settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus()==2){ if (state!=null && state!=1){ continue; } // 已结算 platformVO.setState(1); balance = balance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementDetail.getCreateTime())); }else{ // 未结算 if (state!=null && state!=2){ continue; } platformVO.setState(2); unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } }else{ // 未结算 if (state!=null && state!=2){ continue; } unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } res.add(platformVO); break; case 4: // 小件物流 // 查询订单信息 TOrderLogistics tOrderLogistics = orderLogisticsRecordMap.get(settlementDetail.getOrderId()); if (tOrderLogistics==null){ continue; } platformVO.setCode(tOrderLogistics.getOrderNum()); TDriver tDriver1 = driverMap.get(tOrderLogistics.getDriverId()); if (tDriver1!=null){ platformVO.setDriverName(tDriver1.getFirstName()+tDriver1.getLastName()); platformVO.setDriverPhone(tDriver1.getPhone()); } platformVO.setRemark(tOrderLogistics.getRemark()); String string1 = settlementDetail.getPrice().toString(); BigDecimal bigDecimal2 = new BigDecimal(string1); platformVO.setMoney(bigDecimal2); platformVO.setInsertTime(format.format(tOrderLogistics.getInsertTime())); platformVO.setPayType("现金支付"); if (settlementDetail.getSettlementRecordId()!=null){ SettlementRecord settlementRecord = settlementRecordMap.get(settlementDetail.getSettlementRecordId()); if (settlementRecord.getPaymentStatus()!=null && settlementRecord.getPaymentStatus()==2){ if (state!=null && state!=1){ continue; } // 已结算 platformVO.setState(1); balance = balance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementDetail.getCreateTime())); }else{ // 未结算 if (state!=null && state!=2){ continue; } platformVO.setState(2); unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); platformVO.setEndTime(format.format(settlementRecord.getDay())); } }else{ // 未结算 if (state!=null && state!=2){ continue; } unBalance = unBalance.add(new BigDecimal(settlementDetail.getPrice())); } res.add(platformVO); break; } } Collections.sort(res, Comparator.comparing(PlatformVO::getInsertTime).reversed()); // 计算佣金总额 BigDecimal add = unBalance.add(balance); return res; } }