From f0b4d0e6bc47a18f4e10ca4c007dcaa01c9c9647 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 16 五月 2023 15:10:35 +0800
Subject: [PATCH] BUG修改

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java |   96 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 88 insertions(+), 8 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
index fce3673..a4789e6 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
@@ -183,8 +183,12 @@
                                 || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
                                 || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
                 // 驾龄
-                Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
-                tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                if(Objects.nonNull(tDriver.getFirstCertificateTime())){
+                    Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
+                    tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                }else {
+                    tOrderServerResp.setDrivingExperience(0);
+                }
                 // 代驾次数
                 tOrderServerResp.setValetDrivingCount(collect.size());
                 // 行驶时间
@@ -199,8 +203,12 @@
                 }
                 tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
                 // 行驶里程
-                int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
-                tOrderServerResp.setMileageTraveled(sum/1000);
+                if(CollectionUtils.isEmpty(collect)){
+                    tOrderServerResp.setMileageTraveled(0);
+                }else {
+                    int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
+                    tOrderServerResp.setMileageTraveled(sum/1000);
+                }
             }
             map.put("serverList",orderServerRespList);
             // 查询今天所有订单
@@ -254,8 +262,12 @@
                                 || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
                                 || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
                 // 驾龄
-                Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
-                tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                if(Objects.nonNull(tDriver.getFirstCertificateTime())){
+                    Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
+                    tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                }else {
+                    tOrderServerResp.setDrivingExperience(0);
+                }
                 // 代驾次数
                 tOrderServerResp.setValetDrivingCount(collect.size());
                 // 行驶时间
@@ -270,8 +282,12 @@
                 }
                 tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
                 // 行驶里程
-                int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
-                tOrderServerResp.setMileageTraveled(sum/1000);
+                if(CollectionUtils.isEmpty(collect)){
+                    tOrderServerResp.setMileageTraveled(0);
+                }else {
+                    int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
+                    tOrderServerResp.setMileageTraveled(sum/1000);
+                }
             }
             map.put("serverList",orderServerRespList);
 
@@ -319,11 +335,43 @@
             List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
             // 查询服务中的订单列表
             List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids);
+            List<TOrder> orderList = tOrderService.selectList(new EntityWrapper<TOrder>());
             // 查询司机
             for (TOrderServerResp tOrderServerResp : orderServerRespList) {
                 TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
                 tOrderServerResp.setAvatar(tDriver.getAvatar());
                 tOrderServerResp.setDriverName(tDriver.getName());
+                List<TOrder> collect = orderList.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) &&
+                        (order.getState().equals(OrderStateEnum.WAIT_PAY.getCode())
+                                || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
+                                || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
+                // 驾龄
+                if(Objects.nonNull(tDriver.getFirstCertificateTime())){
+                    Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
+                    tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                }else {
+                    tOrderServerResp.setDrivingExperience(0);
+                }
+                // 代驾次数
+                tOrderServerResp.setValetDrivingCount(collect.size());
+                // 行驶时间
+                long goTime = 0;
+                for (TOrder tOrder : collect) {
+                    // 下车时间
+                    Date getoffTime = tOrder.getGetoffTime();
+                    // 上车时间
+                    Date boardingTime = tOrder.getBoardingTime();
+                    long minutes = Duration.between(DateUtil.dateToLocalDateTime(getoffTime), DateUtil.dateToLocalDateTime(boardingTime)).toMinutes();
+                    goTime += Math.abs(minutes);
+                }
+                tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
+                // 行驶里程
+                if(CollectionUtils.isEmpty(collect)){
+                    tOrderServerResp.setMileageTraveled(0);
+                }else {
+                    int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
+                    tOrderServerResp.setMileageTraveled(sum/1000);
+                }
             }
             map.put("serverList",orderServerRespList);
         }else {
@@ -331,11 +379,43 @@
             List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
             // 查询服务中的订单列表
             List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids);
+            List<TOrder> orderList = tOrderService.selectList(new EntityWrapper<TOrder>());
             // 查询司机
             for (TOrderServerResp tOrderServerResp : orderServerRespList) {
                 TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId());
                 tOrderServerResp.setAvatar(tDriver.getAvatar());
                 tOrderServerResp.setDriverName(tDriver.getName());
+                List<TOrder> collect = orderList.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) &&
+                        (order.getState().equals(OrderStateEnum.WAIT_PAY.getCode())
+                                || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
+                                || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList());
+                // 驾龄
+                if(Objects.nonNull(tDriver.getFirstCertificateTime())){
+                    Period period = Period.between(LocalDate.now(), DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime()));
+                    tOrderServerResp.setDrivingExperience(Math.max(Math.abs(period.getYears()), 1));
+                }else {
+                    tOrderServerResp.setDrivingExperience(0);
+                }
+                // 代驾次数
+                tOrderServerResp.setValetDrivingCount(collect.size());
+                // 行驶时间
+                long goTime = 0;
+                for (TOrder tOrder : collect) {
+                    // 下车时间
+                    Date getoffTime = tOrder.getGetoffTime();
+                    // 上车时间
+                    Date boardingTime = tOrder.getBoardingTime();
+                    long minutes = Duration.between(DateUtil.dateToLocalDateTime(getoffTime), DateUtil.dateToLocalDateTime(boardingTime)).toMinutes();
+                    goTime += Math.abs(minutes);
+                }
+                tOrderServerResp.setGoTime(Long.valueOf(goTime).intValue());
+                // 行驶里程
+                if(CollectionUtils.isEmpty(collect)){
+                    tOrderServerResp.setMileageTraveled(0);
+                }else {
+                    int sum = collect.stream().mapToInt(TOrder::getActualMileage).sum();
+                    tOrderServerResp.setMileageTraveled(sum/1000);
+                }
             }
             map.put("serverList",orderServerRespList);
         }

--
Gitblit v1.7.1