xuhy
2025-08-29 e59d2141bc8f9bee8b569deaa54158b3759c431e
ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java
@@ -27,10 +27,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -481,13 +478,13 @@
            incomeEntityWrapper.eq("type",2);
            incomeEntityWrapper.isNotNull("money");
            if (start!=null){
                start = start + " 00:00:00";
                end = end + " 23:59:59";
                incomeEntityWrapper.ge("insertTime", start);
                incomeEntityWrapper.le("insertTime", end);
            }
            List<Income> incomes = incomeService.selectList(
                    incomeEntityWrapper
            );
            List<Income> incomes = incomeService.selectList(incomeEntityWrapper);
            EntityWrapper<TOrderPrivateCar> driverEntityWrapper = new EntityWrapper<>();
            driverEntityWrapper.isNotNull("driverId");
            if (start!=null){
@@ -529,6 +526,83 @@
            return ResultUtil.runErr();
        }
    }
    /**
     * 司机收益统计
     * @author yxh
     * @date 2021/4/2 17:35
     * @return java.lang.Object
     */
    @ResponseBody
    @RequestMapping(value = "/queryDriverIncomeDataSum", method = RequestMethod.POST)
    public Object queryDriverIncomeDataSum(String driverName, String time, Integer companyId){
        try {
            String start = null;
            String end = null;
            if(ToolUtil.isNotEmpty(time)){
                start = time.split(" - ")[0];
                end = time.split(" - ")[1];
            }
            List<Map<String, Object>> maps = driverService.queryDriverIncomeDataNoPage( driverName, start, end, companyId);
            EntityWrapper<Income> incomeEntityWrapper = new EntityWrapper<>();
            incomeEntityWrapper.eq("type",2);
            incomeEntityWrapper.isNotNull("money");
            if (start!=null){
                start = start + " 00:00:00";
                end = end + " 23:59:59";
                incomeEntityWrapper.ge("insertTime", start);
                incomeEntityWrapper.le("insertTime", end);
            }
            List<Income> incomes = incomeService.selectList(incomeEntityWrapper);
            EntityWrapper<TOrderPrivateCar> driverEntityWrapper = new EntityWrapper<>();
            driverEntityWrapper.isNotNull("driverId");
            if (start!=null){
                driverEntityWrapper.ge("insertTime", start);
                driverEntityWrapper.le("insertTime", end);
            }
            List<TOrderPrivateCar> tOrderPrivateCars = orderPrivateCarService.selectList(driverEntityWrapper);
            for (Map<String, Object> map : maps) {
                Double driverMoney   = 0.0;
                Double platformMoney = 0.0;
                // 司机跑单收入
                List<Income> driver = incomes.stream().filter(e -> e.getUserType().equals(2)
                &&map.get("id").toString().equals(e.getObjectId().toString())).collect(Collectors.toList());
                for (Income income : driver) {
                    driverMoney+=income.getMoney();
                }
                String driverId = map.get("id").toString();
                // 查询司机订单
                List<Integer> orderIds = tOrderPrivateCars.stream().filter(e -> e.getDriverId().equals(Integer.parseInt(driverId)))
                        .map(TOrderPrivateCar::getId).collect(Collectors.toList());
                // 平台收入
                List<Income> platform = incomes.stream().filter(e -> e.getUserType().equals(1)
                        && orderIds.contains(e.getObjectId())).collect(Collectors.toList());
                for (Income income : platform) {
                    platformMoney+=income.getMoney();
                }
                // driverMoney保留两位小数
                driverMoney = new BigDecimal(driverMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                platformMoney = new BigDecimal(platformMoney).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                map.put("driverMoney", driverMoney);
                map.put("platformMoney", platformMoney);
            }
            Map<String, Object> result = new HashMap<>();
            int totalOrderCount = maps.stream().mapToInt(e -> Integer.parseInt(e.get("privateCarTotalNum").toString())).sum();
            result.put("totalOrderCount", totalOrderCount);
            double totalPayMoney = maps.stream().mapToDouble(e -> Double.parseDouble(e.get("payMoney").toString())).sum();
            result.put("totalPayMoney", totalPayMoney);
            double totalIncome = maps.stream().mapToDouble(e -> Double.parseDouble(e.get("driverMoney").toString())).sum();
            result.put("totalIncome", totalIncome);
            double totalPlatformMoney = maps.stream().mapToDouble(e -> Double.parseDouble(e.get("platformMoney").toString())).sum();
            result.put("totalPlatformMoney", totalPlatformMoney);
            return result;
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 导出司机收益排行