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