From 6408a348e14193b0f625673d4e4b22b9fbd1e369 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 08 八月 2025 18:10:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java | 142 ++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 121 insertions(+), 21 deletions(-) diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java index 5191e45..f11c269 100644 --- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java +++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java @@ -9,7 +9,9 @@ import com.stylefeng.guns.core.util.ExcelExportUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.model.Income; import com.stylefeng.guns.modular.system.model.TCompany; +import com.stylefeng.guns.modular.system.model.TOrderPrivateCar; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -23,11 +25,13 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; 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.stream.Collectors; /** * 报表控制器 @@ -52,6 +56,10 @@ @Autowired private ITDriverService driverService; + @Autowired + private IIncomeService incomeService; + @Autowired + private ITOrderPrivateCarService orderPrivateCarService; @@ -459,7 +467,7 @@ */ @ResponseBody @RequestMapping(value = "/queryDriverIncomeData", method = RequestMethod.POST) - public Object queryDriverIncomeData(Integer type, String time, Integer companyId){ + public Object queryDriverIncomeData(String driverName, String time, Integer companyId){ try { String start = null; String end = null; @@ -468,7 +476,53 @@ end = time.split(" - ")[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(driverService.queryDriverIncomeData(page,type,start,end,companyId)); + List<Map<String, Object>> maps = driverService.queryDriverIncomeData(page, driverName, start, end, companyId); + EntityWrapper<Income> incomeEntityWrapper = new EntityWrapper<>(); + incomeEntityWrapper.eq("type",2); + incomeEntityWrapper.isNotNull("money"); + if (start!=null){ + 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); + } + page.setRecords(maps); return super.packForBT(page); }catch (Exception e){ e.printStackTrace(); @@ -480,20 +534,66 @@ * 导出司机收益排行 * @author yxh * @date 2021/4/7 9:32 - * @param type + * @param driverName * @param time * @param companyId * @param response */ @RequestMapping(value = "/downloadDriverIncomeData", method = RequestMethod.GET) - public void downloadDriverIncomeData(Integer type, String time, Integer companyId, HttpServletRequest request, HttpServletResponse response){ + public void downloadDriverIncomeData(String driverName, String time, Integer companyId, HttpServletRequest request, HttpServletResponse response){ String start = null; String end = null; if(ToolUtil.isNotEmpty(time)){ start = time.split(" - ")[0]; end = time.split(" - ")[1]; } - List<Map<String, Object>> list = driverService.queryDriverIncomeDataNoPage(type,start,end,companyId); + List<Map<String, Object>> list = driverService.queryDriverIncomeDataNoPage(driverName,start,end,companyId); + EntityWrapper<Income> incomeEntityWrapper = new EntityWrapper<>(); + incomeEntityWrapper.eq("type",2); + incomeEntityWrapper.isNotNull("money"); + if (start!=null){ + 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 : list) { + 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); + } // 表格数据 List<List<String>> dataList = new ArrayList<>(); // 表头行 @@ -501,11 +601,11 @@ shellList.add("姓名"); shellList.add("账号/手机号"); shellList.add("所属分公司"); - shellList.add("订单总数"); - shellList.add("未支付订单数"); - shellList.add("取消订单数"); + shellList.add("已完成订单数"); shellList.add("订单总金额"); - shellList.add("未支付订金额"); + shellList.add("实付金额"); + shellList.add("司机收入"); + shellList.add("平台手续费"); dataList.add(shellList); for (Map<String, Object> map : list) { @@ -531,23 +631,23 @@ }else{ shellList.add("0"); } - if(SinataUtil.isNotEmpty(map.get("privateCarNotPayNum"))){ - shellList.add(map.get("privateCarNotPayNum").toString()); - }else{ - shellList.add("0"); - } - if(SinataUtil.isNotEmpty(map.get("privateCarcancelNum"))){ - shellList.add(map.get("privateCarcancelNum").toString()); - }else{ - shellList.add("0"); - } if(SinataUtil.isNotEmpty(map.get("privateCarTotalMoney"))){ shellList.add(map.get("privateCarTotalMoney").toString()); }else{ shellList.add("0"); } - if(SinataUtil.isNotEmpty(map.get("privateCarNotPayMoney"))){ - shellList.add(map.get("privateCarNotPayMoney").toString()); + if(SinataUtil.isNotEmpty(map.get("payMoney"))){ + shellList.add(map.get("payMoney").toString()); + }else{ + shellList.add("0"); + } + if(SinataUtil.isNotEmpty(map.get("driverMoney"))){ + shellList.add(map.get("driverMoney").toString()); + }else{ + shellList.add("0"); + } + if(SinataUtil.isNotEmpty(map.get("platformMoney"))){ + shellList.add(map.get("platformMoney").toString()); }else{ shellList.add("0"); } -- Gitblit v1.7.1