From 0467b2c78c12aba5922e5b900eed5205824e9220 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 15 八月 2025 09:44:33 +0800
Subject: [PATCH] bug修改

---
 DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |    8 +-
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml                        |   89 ++++++++++++++++++++++
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java                    |    6 
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java   |   22 +++++
 DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java                  |    6 
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java                 |   45 +++++++++-
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java                               |    9 ++
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java                         |    2 
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java                     |   21 +++++
 9 files changed, 191 insertions(+), 17 deletions(-)

diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
index 4e46bf9..339a911 100644
--- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
+++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -434,7 +434,7 @@
     private Integer priceType;
     @ApiModelProperty(value = "预估价")
     @TableField("estimatedPrice")
-    private BigDecimal estimatedPrice;
+    private Double estimatedPrice;
 
     @ApiModelProperty(value = "上一次定位推送时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -521,11 +521,11 @@
         this.priceType = priceType;
     }
 
-    public BigDecimal getEstimatedPrice() {
+    public Double getEstimatedPrice() {
         return estimatedPrice;
     }
 
-    public void setEstimatedPrice(BigDecimal estimatedPrice) {
+    public void setEstimatedPrice(Double estimatedPrice) {
         this.estimatedPrice = estimatedPrice;
     }
 
diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 48e6314..e25f596 100644
--- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -569,7 +569,7 @@
             orderPrivateCar.setState(7);
         }
 
-        if(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) {
+        if(orderPrivateCar.getPayMethod() == 0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) {
             orderPrivateCar.setState(8);
             // 退款情况
             if (new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney())) > 0) {
@@ -630,7 +630,7 @@
 //            orderPrivateCar.setBindId("");
 //        }
         // 判断预估金额和订单金额差异是否大于3元
-        if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){
+        if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){
             orderPrivateCar.setIsException(1);
         }
         if(orderPrivateCar.getIsException() == 1){
@@ -704,9 +704,9 @@
         map.put("discountMoney", orderPrivateCar.getDiscountMoney());//折扣抵扣金额
         map.put("discount", orderPrivateCar.getDiscount());//折扣
         if(Objects.isNull(orderPrivateCar.getEstimatedPrice())){
-            orderPrivateCar.setEstimatedPrice(BigDecimal.ZERO);
+            orderPrivateCar.setEstimatedPrice(0D);
         }
-        if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){
+        if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){
             orderPrivateCar.setIsException(1);
         }
         map.put("estimatedPrice", orderPrivateCar.getEstimatedPrice());
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
index e30593c..8b7add8 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -396,7 +396,7 @@
     private Integer priceType;
     @ApiModelProperty(value = "预估价")
     @TableField("estimatedPrice")
-    private BigDecimal estimatedPrice;
+    private Double estimatedPrice;
 
     @ApiModelProperty(value = "上一次定位推送时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -484,11 +484,11 @@
         this.priceType = priceType;
     }
 
-    public BigDecimal getEstimatedPrice() {
+    public Double getEstimatedPrice() {
         return estimatedPrice;
     }
 
-    public void setEstimatedPrice(BigDecimal estimatedPrice) {
+    public void setEstimatedPrice(Double estimatedPrice) {
         this.estimatedPrice = estimatedPrice;
     }
     public Integer getIsplatPay() {
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 0fc2013..7631755 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -287,7 +287,6 @@
         orderPrivateCar.setTravelTime(travelTime);
         orderPrivateCar.setOrderType(reservation);
         orderPrivateCar.setOrderSource(orderSource);
-        orderPrivateCar.setEstimatedPrice(estimatedPrice);
         if(orderSource == 2){//扫码下单
             Driver driver = driverService.selectById(driverId);
             if(null == driver){
@@ -349,8 +348,10 @@
             orderPrivateCar.setState(7);
             if(orderSource == 2){
                 orderPrivateCar.setOrderMoney(data.get(0).getAmount());
+                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
             }else {
                 orderPrivateCar.setOrderMoney(data.get(carIndex).getAmount());
+                orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
             }
             orderPrivateCar.setPayMethod(0);
             this.insert(orderPrivateCar);
@@ -361,6 +362,11 @@
             baseWarpper.setAmount(orderPrivateCar.getOrderMoney());
             return ResultUtil.success(baseWarpper);
         }else {
+            if(orderSource == 2){
+                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+            }else {
+                orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
+            }
             orderPrivateCar.setIsReassign(1);
             orderPrivateCar.setIsDelete(1);
             orderPrivateCar.setPayMethod(1);
@@ -1166,7 +1172,11 @@
                     for(int i = 1; i <= querys.size(); i++){
                         PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0);
                         //获取空闲司机
+//                        List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                         List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
+                        List<Driver> list1 = driverService.queryIdleDriver_(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), 2.0D, null);//所有附近空闲司机
+                        list.addAll(list1);
+                        list = list.stream().distinct().collect(Collectors.toList());
                         if(list.size() > 0){
                             // 查询预约单
                             List<Integer> driverIds = list.stream().map(Driver::getId).collect(Collectors.toList());
@@ -2121,6 +2131,16 @@
             List<OrderPosition> list = JSONArray.parseArray(sb.toString(), OrderPosition.class);
             orderServerWarpper.setOrderPositionList(JSONObject.toJSONString(list));
         }
+        // 查询司机服务中的订单
+        OrderPrivateCar one = this.selectOne(new EntityWrapper<OrderPrivateCar>()
+                .eq("driverId", orderPrivateCar.getDriverId())
+                .eq("state", 5)
+                .orderBy("insertTime", false)
+                .last("LIMIT 1"));
+        if(Objects.nonNull(one)){
+            orderServerWarpper.setLastLon(one.getEndLon()+"");
+            orderServerWarpper.setLastLat(one.getEndLat()+"");
+        }
         return orderServerWarpper;
     }
 
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java
index 5e42500..16f4b83 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java
@@ -27,6 +27,15 @@
      */
     List<Driver> queryIdleDriver_(@Param("type") Integer type, @Param("serverCarModelId") Integer serverCarModelId,
                                  @Param("companyId") Integer companyId);
+    /**
+     * 获取当前已上班type业务类型、设置了可以接此类型的单据、服务车型匹配且空闲的司机
+     * @param type
+     * @param serverCarModelId
+     * @param companyId
+     * @return
+     */
+    List<Driver> queryIdleDriverService_(@Param("type") Integer type, @Param("serverCarModelId") Integer serverCarModelId,
+                                 @Param("companyId") Integer companyId);
 
 
     /**
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
index a00c013..f94fd95 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
@@ -254,6 +254,95 @@
         )
     </select>
 
+    <select id="queryIdleDriverService_" resultType="Driver">
+        select
+        id as id,
+        account as account,
+        jobNumber as jobNumber,
+        phone as phone,
+        password as password,
+        name as name,
+        sex as sex,
+        idCard as idCard,
+        companyId as companyId,
+        franchiseeId as franchiseeId,
+        headImgUrl as headImgUrl,
+        faceImgUrl as faceImgUrl,
+        idCardImgUrl1 as idCardImgUrl1,
+        idCardImgUrl2 as idCardImgUrl2,
+        placeOfEmployment as placeOfEmployment,
+        birthday as birthday,
+        bankCardNumber as bankCardNumber,
+        driverNationality as driverNationality,
+        driverNation as driverNation,
+        driverMaritalStatus as driverMaritalStatus,
+        driverLanguageLevel as driverLanguageLevel,
+        driverEducation as driverEducation,
+        driverCensus as driverCensus,
+        driverAddress as driverAddress,
+        driverContactAddress as driverContactAddress,
+        driverAge as driverAge,
+        driveCard as driveCard,
+        driveCardImgUrl as driveCardImgUrl,
+        driverType as driverType,
+        getDriverLicenseDate as getDriverLicenseDate,
+        driverLicenseOn as driverLicenseOn,
+        driverLicenseOff as driverLicenseOff,
+        taxiDriver as taxiDriver,
+        taxiAptitudeCard as taxiAptitudeCard,
+        networkCarlssueImg as networkCarlssueImg,
+        networkCarlssueOrganization as networkCarlssueOrganization,
+        networkCarlssueDate as networkCarlssueDate,
+        getNetworkCarProofDate as getNetworkCarProofDate,
+        networkCarProofOn as networkCarProofOn,
+        networkCarProofOff as networkCarProofOff,
+        registerDate as registerDate,
+        fullTimeDriver as fullTimeDriver,
+        inDriverBlacklist as inDriverBlacklist,
+        commercialType as commercialType,
+        contractCompany as contractCompany,
+        contractOn as contractOn,
+        contractOff as contractOff,
+        emergencyContact as emergencyContact,
+        emergencyContactPhone as emergencyContactPhone,
+        emergencyContactAddress as emergencyContactAddress,
+        remark as remark,
+        isPlatCar as isPlatCar,
+        carId as carId,
+        authState as authState,
+        state as state,
+        addType as addType,
+        balance as balance,
+        flag as flag,
+        insertTime as insertTime,
+        insertUser as insertUser,
+        updateTime as updateTime,
+        updateUser as updateUser
+        from t_driver
+        where flag != 3 and state = 3 and authState = 2
+        <if test="null != companyId">
+            <choose>
+                <when test="companyId != 1">
+                    and companyId = #{companyId} or franchiseeId = #{companyId}
+                </when>
+                <otherwise>
+                    and companyId is null or companyId = 0 or companyId = 1 or franchiseeId is null or franchiseeId = 0
+                </otherwise>
+            </choose>
+
+        </if>
+        and id in
+        (
+        select driverId from t_driver_work where startTime &lt; now() and state = 1 and `type` like CONCAT('%', #{type}, '%')
+        )
+        and id in (select driverId from t_driver_orders where `type` = #{type})
+        and carId in (select carId from t_car_service where `type` = #{type}
+        <if test="null != serverCarModelId">
+            and serverCarModelId = #{serverCarModelId}
+        </if>
+        )
+    </select>
+
 
 
     <select id="queryOrderDriver" resultType="map">
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java
index 1a0766f..f8d8589 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java
@@ -62,4 +62,6 @@
     List<BaseWarpper> queryBusiness(Integer uid) throws Exception;
 
     List<Driver> queryDriverLimitTen(Integer type, Double lon, Double lat);
+
+    List<Driver> queryIdleDriver_(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId);
 }
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
index 246b928..c2337d0 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -17,10 +17,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -65,7 +62,7 @@
                     list.add(driver);
                 }
             }else{
-                System.err.println(driver.getName() + "-----------------没有上传经纬度----------------");
+//                System.err.println(driver.getName() + "-----------------没有上传经纬度----------------");
             }
         }
         return list;
@@ -88,7 +85,38 @@
         List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId);
         List<Driver> list = new ArrayList<>();
         for(Driver driver : drivers){
+            if(driver.getId() == 2448){
+                System.err.println("司机名称---"+driver.getName());
+            }
             String value = redisUtil.getValue("DRIVER" + String.valueOf(driver.getId()));
+            if(null != value){
+                /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离
+                double d = Double.valueOf(distance1.get("distance")).doubleValue();*/
+//                double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0]));
+                double d = gdMapElectricFenceUtil.getDrivingRoute(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0]));
+                if(d < (distance * 1000)){
+                    list.add(driver);
+                }
+            }
+        }
+        return list;
+    }
+    /**
+     * 获取给定车型且空闲的司机
+     * @param type
+     * @param serverCarModelId
+     * @param lon
+     * @param lat
+     * @param distance
+     * @param companyId
+     * @return
+     */
+    @Override
+    public List<Driver> queryIdleDriver_(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) {
+        List<Driver> drivers = driverMapper.queryIdleDriverService_(type, serverCarModelId, companyId);
+        List<Driver> list = new ArrayList<>();
+        for(Driver driver : drivers){
+            String value = redisUtil.getValue("DRIVER" + driver.getId());
             if(null != value){
                 /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离
                 double d = Double.valueOf(distance1.get("distance")).doubleValue();*/
@@ -169,13 +197,18 @@
         if(CollectionUtils.isEmpty(drivers)){
             return new ArrayList<>();
         }
-        for (Driver driver : drivers) {
+        Iterator<Driver> iterator = drivers.iterator();
+        while (iterator.hasNext()){
+            Driver driver = iterator.next();
             String value = redisUtil.getValue("DRIVER" + driver.getId());
             if(null != value){
                 double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0]));
                 driver.setLon(Double.parseDouble(value.split(",")[0]));
                 driver.setLat(Double.parseDouble(value.split(",")[1]));
                 driver.setDistance(d);
+            }else {
+                System.err.println(driver.getName() + "------没有上传经纬度------");
+                iterator.remove();
             }
         }
         if(drivers.size() > 10){
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java
index 5f6fb97..47653b5 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderServerWarpper.java
@@ -34,6 +34,27 @@
     private Integer reassignNotice;
     private String orderPositionList;
 
+    @ApiModelProperty("司机上一单位置经度")
+    private String lastLon;
+    @ApiModelProperty("司机上一单位置纬度")
+    private String lastLat;
+
+    public String getLastLon() {
+        return lastLon;
+    }
+
+    public void setLastLon(String lastLon) {
+        this.lastLon = lastLon;
+    }
+
+    public String getLastLat() {
+        return lastLat;
+    }
+
+    public void setLastLat(String lastLat) {
+        this.lastLat = lastLat;
+    }
+
     public String getOrderPositionList() {
         return orderPositionList;
     }

--
Gitblit v1.7.1