From da780b14b8db78043d2c0f27d3bfd73111e6d550 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期四, 04 六月 2026 15:36:54 +0800
Subject: [PATCH] 更新配置文件和线路模型增加调度电话字段

---
 ManagementYKDTravel/guns-admin/src/main/resources/application-prod.yml                                                                |    4 
 ManagementYKDTravel/guns-admin/src/main/resources/application-dev.yml                                                                 |   29 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_addFranchisee.html                               |    6 
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine.js                                                   |   11 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml                   |   26 +
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java                                           |   11 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineWarpper.java                                  |   12 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TLineMapper.java                                   |    8 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TLineServiceImpl.java                     |    9 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detail.html                                      |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java             |  112 +++-
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine.html                                                   |    3 
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js                               |    2 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java                      |   68 ++
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/LineSiteController.java                        |    2 
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/tCompany_info.js                                        |    4 
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js                                                |   36 +
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml                                |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java                     |    3 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java             |   76 +-
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html                                        |    8 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java                |  190 ++-----
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITLineService.java                             |    8 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java                 |   62 ++
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detailFranchisee.html                            |    2 
 DriverYKDTravel/guns-admin/src/main/resources/seat/seat_six.png                                                                       |    0 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java                    |   26 +
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysReformistController.java        |    2 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TLineMapper.xml                            |   16 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_add.html                                         |    6 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java           |   53 --
 ManagementYKDTravel/guns-admin/src/main/resources/application-test.yml                                                                |    4 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html                               |    2 
 DriverYKDTravel/guns-admin/src/main/resources/application-prod.yml                                                                    |    2 
 DriverYKDTravel/guns-admin/src/main/resources/seat/seat_seven.png                                                                     |    0 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_add.html                                       |    1 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_edit.html                                              |   95 ----
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml                  |    2 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml                      |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java              |  147 +----
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java                          |    7 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java                                         |   14 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_edit.html                                      |    1 
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine_info.js                                              |  142 ------
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml                            |    7 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_updateFranchisee.html                            |    8 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml                    |    3 
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java |    4 
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html                                               |   87 ---
 ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/franchisee_info.js                                      |    4 
 DriverYKDTravel/guns-admin/src/main/resources/seat/seat_five.png                                                                      |    0 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml                          |   16 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml                     |    3 
 53 files changed, 523 insertions(+), 827 deletions(-)

diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java
index a4b7de2..5848c4d 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java
@@ -44,6 +44,13 @@
     List<Map<String, Object>> queryDriverAvailableShifts(@Param("driverId") Integer driverId, @Param("date") String date);
 
     /**
+     * 查询司机指定日期指定班次是否已有完成服务/已完成订单
+     */
+    int countCompletedShiftOrders(@Param("driverId") Integer driverId,
+                                  @Param("lineShiftId") Integer lineShiftId,
+                                  @Param("time") Date time);
+
+    /**
      * 【202604】查询司机本人已领取/被分配的排班列表(今天及之后)
      * @param driverId 司机id
      * @param startDate 开始日期(yyyy-MM-dd)
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
index 5376b6e..cc63641 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
@@ -77,7 +77,7 @@
             -- 线路信息
             l.id as lineId,
             l.name as lineName,
-            lp.content as priceContent,
+            null as priceContent,
             DATE_FORMAT(lsd.day, '%Y-%m-%d') as day,
             ls.startTime as startTime,
             ls.endTime as endTime,
@@ -115,7 +115,6 @@
             LEFT JOIN t_car_brand cb ON c.carBrandId = cb.id
             LEFT JOIN t_car_model cm ON c.carModelId = cm.id
             LEFT JOIN t_car_service cs ON c.id = cs.carId AND cs.type = 3
-            LEFT JOIN t_line_price lp ON l.id = lp.lineId AND cs.serverCarModelId = lp.serverCarModelId AND lp.state = 1
         WHERE lsd.id = #{lineShiftDriverId}
     </select>
 
@@ -146,11 +145,32 @@
         INNER JOIN t_line_shift ls ON l.id = ls.lineId AND ls.state = 1
         LEFT JOIN t_line_shift_driver lsd ON ls.id = lsd.lineShiftId
             AND lsd.driverId = #{driverId}
-            AND DATE_FORMAT(lsd.`day`, '%Y-%m-%d') = #{date}
+            AND lsd.`day` = #{date}
         WHERE dl.driverId = #{driverId}
+          AND NOT EXISTS (
+              SELECT 1
+              FROM t_line_shift_driver done_lsd
+              INNER JOIN t_order_cross_city occ ON occ.lineShiftDriverId = done_lsd.id
+              WHERE done_lsd.driverId = #{driverId}
+                AND done_lsd.lineShiftId = ls.id
+                AND done_lsd.`day` = #{date}
+                AND occ.isDelete = 1
+                AND occ.state IN (6, 8, 9)
+          )
         ORDER BY lineCompletedCount DESC, l.id, ls.startTime
     </select>
 
+    <select id="countCompletedShiftOrders" resultType="int">
+        SELECT COUNT(1)
+        FROM t_line_shift_driver lsd
+        INNER JOIN t_order_cross_city occ ON occ.lineShiftDriverId = lsd.id
+        WHERE lsd.driverId = #{driverId}
+          AND lsd.lineShiftId = #{lineShiftId}
+          AND lsd.`day` = DATE(#{time})
+          AND occ.isDelete = 1
+          AND occ.state IN (6, 8, 9)
+    </select>
+
     <!-- 【202604】查询司机本人已领取/被分配的排班列表(今天及之后) -->
     <select id="queryMyDriverShiftList" resultType="java.util.Map">
         SELECT *
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
index ada49c1..72f8bcf 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
@@ -26,8 +26,10 @@
         d.carColor as carColor,
         CONCAT((a.totalSeat - a.laveSeat), '/', a.totalSeat) as `number`,
         (select sum(fraction)/count(fraction) from t_order_evaluate where driverId = a.driverId) as evaluate,
-        h.type as priceType,
-        h.content as content,
+        null as priceType,
+        null as content,
+        (select price5 from t_line_destination where lineId = b.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice5,
+        (select price7 from t_line_destination where lineId = b.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice7,
         a.driverId as driverId,
         c.carId as carId,
         a.totalSeat as totalSeat,
@@ -41,7 +43,6 @@
         left join t_car_brand e on (d.carBrandId = e.id)
         left join t_car_model f on (d.carModelId = f.id)
         left join t_car_service g on (d.id = g.carId and g.`type` = 3)
-        left join t_line_price h on (g.serverCarModelId = h.serverCarModelId and b.lineId = h.lineId)
         where 1 = 1
         <if test="null != lineId">
             and b.lineId = #{lineId}
@@ -67,8 +68,10 @@
         d.carColor as carColor,
         CONCAT((a.totalSeat - a.laveSeat), '/', a.totalSeat) as `number`,
         (select sum(fraction)/count(fraction) from t_order_evaluate where driverId = a.driverId) as evaluate,
-        h.type as priceType,
-        h.content as content,
+        null as priceType,
+        null as content,
+        (select price5 from t_line_destination where lineId = b.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice5,
+        (select price7 from t_line_destination where lineId = b.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice7,
         a.driverId as driverId,
         c.carId as carId,
         a.totalSeat as totalSeat,
@@ -82,7 +85,6 @@
         left join t_car_brand e on (d.carBrandId = e.id)
         left join t_car_model f on (d.carModelId = f.id)
         left join t_car_service g on (d.id = g.carId and g.`type` = 3)
-        left join t_line_price h on (g.serverCarModelId = h.serverCarModelId and b.lineId = h.lineId)
         where 1 = 1
         <if test="null != lineId">
             and b.lineId = #{lineId}
@@ -93,4 +95,4 @@
         and a.driverId != #{driverId}
         order by b.startTime
     </select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
index df580a9..57ba935 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
@@ -262,13 +262,14 @@
         a.thankYouFee,
         a.payManner as payManner,
         a.seatNumber as seatNumber,
-        (select phone from t_phone where companyId = a.companyId and `type` = 1) as emergencyCall,
+        IF(IFNULL(l.dispatchPhone, '') != '', l.dispatchPhone, (select phone from t_phone where companyId = a.companyId and `type` = 1)) as emergencyCall,
         e.money as personalIncome,
         f.money as serverMoney
         from t_order_cross_city a
         left join t_user b on (a.userId = b.id)
         left join t_line_shift_driver c on (a.lineShiftDriverId = c.id)
 		left join t_line_shift d on (c.lineShiftId = d.id)
+        left join t_line l on (d.lineId = l.id)
         left join t_income e on (a.id = e.incomeId and e.orderType = 3 and e.userType = 2)
         left join t_income f on (a.id = f.incomeId and f.orderType = 3 and f.userType = 1)
         where a.id = #{orderId}
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
index 2a713cc..c135292 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
@@ -45,6 +45,11 @@
     private Date insertTime;
     @TableField("outSetting")
     private String outSetting;
+    /**
+     * 调度电话
+     */
+    @TableField("dispatchPhone")
+    private String dispatchPhone;
 
     public Integer getId() {
         return id;
@@ -102,6 +107,14 @@
         this.outSetting = outSetting;
     }
 
+    public String getDispatchPhone() {
+        return dispatchPhone;
+    }
+
+    public void setDispatchPhone(String dispatchPhone) {
+        this.dispatchPhone = dispatchPhone;
+    }
+
     @Override
     public String toString() {
         return "Line{" +
@@ -111,6 +124,7 @@
                 ", rakeRate=" + rakeRate +
                 ", state=" + state +
                 ", insertTime=" + insertTime +
+                ", dispatchPhone='" + dispatchPhone + '\'' +
                 '}';
     }
 }
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
index 7569d9d..67c59d7 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
@@ -31,6 +31,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
@@ -58,9 +61,6 @@
 
     @Resource
     private LineShiftMapper lineShiftMapper;
-
-    @Resource
-    private LinePriceMapper linePriceMapper;
 
     @Resource
     private CarServiceMapper carServiceMapper;
@@ -99,6 +99,10 @@
             return ResultUtil.error("您还没预约呢");
         }
         if(type == 1){//预约操作
+            int completedCount = lineShiftDriverMapper.countCompletedShiftOrders(driverId, lineShiftId, date.get("startTime"));
+            if (completedCount > 0) {
+                return ResultUtil.error("该班次已完成,不能重复领取");
+            }
             boolean b = this.judgeTime(driverId, lineShiftId, date.get("startTime"));
             if(b){
                 return ResultUtil.error("预约间隔超出给定可预约范围");
@@ -113,9 +117,9 @@
             if(null == query){
                 return ResultUtil.error("车辆未开通该服务");
             }
-            Map<String, Object> query1 = linePriceMapper.query(lineShift.getLineId(), query.getServerCarModelId());
-            if(null == query1){
-                return ResultUtil.error("该线路还未设置服务车型相关数据,请联系管理员!");
+            List<Map<String, Object>> destinations = lineMapper.queryLineDestinations(lineShift.getLineId());
+            if(destinations == null || destinations.size() == 0){
+                return ResultUtil.error("该线路还未设置目的地价格,请联系管理员!");
             }
             CarModel carModel = carModelMapper.selectById(carService.selectById(driverService.selectById(driverId).getCarId()).getCarModelId());
             LineShiftDriver lineShiftDriver = new LineShiftDriver();
@@ -297,31 +301,7 @@
             lineItem.setLineId(entry.getKey());
             lineItem.setLineName(lineNameMap.get(entry.getKey()));
 
-            // 查询线路单价
-            Double unitPrice = 0.0D;
-            if (carModel != null){
-                List<Map<String, Object>> maps = lineMapper.queryLineDestinations(entry.getKey());
-                if (!maps.isEmpty()){
-                    Object o = maps.get(0).get("price" + (carModel.getSeat() + 1));
-                    if (o != null){
-                        unitPrice = Double.valueOf(o.toString());
-                    }
-                }
-            }
-
-//            if (serverCarModelId != null) {
-//                Map<String, Object> priceInfo = linePriceMapper.query(entry.getKey(), serverCarModelId);
-//                if (priceInfo != null && priceInfo.get("content") != null) {
-//                    // 解析 content JSON,获取 num1(单人价格)
-//                    String content = priceInfo.get("content").toString();
-//                    JSONObject jsonObject = JSON.parseObject(content);
-//                    String num1 = jsonObject.getString("num1");
-//                    if (num1 != null && !num1.isEmpty()) {
-//                        unitPrice = Double.parseDouble(num1);
-//                    }
-//                }
-//            }
-            lineItem.setUnitPrice(unitPrice);
+            lineItem.setUnitPrice(queryDefaultDestinationPrice(entry.getKey(), carModel == null ? null : carModel.getSeat()));
 
             List<LineShiftItemWarpper> shifts = new ArrayList<>();
             for (Map<String, Object> shiftMap : entry.getValue()) {
@@ -649,20 +629,11 @@
         result.setStartTime(data.get("startTime") != null ? data.get("startTime").toString() : null);
         result.setEndTime(data.get("endTime") != null ? data.get("endTime").toString() : null);
         result.setTotalSeat(data.get("totalSeat") != null ? Integer.parseInt(data.get("totalSeat").toString()) : null);
+        result.setTotalSeatImage(getTotalSeatImage(result.getTotalSeat()));
         result.setLaveSeat(data.get("laveSeat") != null ? Integer.parseInt(data.get("laveSeat").toString()) : null);
         result.setLaveSeatNumber(data.get("laveSeatNumber") != null ? data.get("laveSeatNumber").toString() : null);
 
-        // 3. 解析价格JSON获取单人价格
-        String priceContent = data.get("priceContent") != null ? data.get("priceContent").toString() : null;
-        if (priceContent != null && !priceContent.isEmpty()) {
-            JSONObject json = JSON.parseObject(priceContent);
-            String num1 = json.getString("num1");
-            if (num1 != null && !num1.isEmpty()) {
-                result.setUnitPrice(Double.parseDouble(num1));
-            }
-        }else {
-            result.setUnitPrice(0.0);
-        }
+        result.setUnitPrice(queryDefaultDestinationPrice(result.getLineId(), result.getTotalSeat()));
 
         // 站点信息
         result.setStartSiteId(data.get("startSiteId") != null ? Integer.parseInt(data.get("startSiteId").toString()) : null);
@@ -742,6 +713,7 @@
         result.setStartTime(trip.getStartTime());
         result.setEndTime(trip.getStartTime());
         result.setTotalSeat(lineShiftDriver.getTotalSeat());
+        result.setTotalSeatImage(getTotalSeatImage(result.getTotalSeat()));
         result.setLaveSeat(lineShiftDriver.getLaveSeat());
         result.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber());
 
@@ -838,4 +810,60 @@
         System.out.println("自动清除无效车程数量 " + cancelCount);
         return cancelCount;
     }
+
+    private Double queryDefaultDestinationPrice(Integer lineId, Integer totalSeat) {
+        List<Map<String, Object>> destinations = lineMapper.queryLineDestinations(lineId);
+        if (destinations == null || destinations.size() == 0) {
+            return 0.0D;
+        }
+        Map<String, Object> destination = destinations.get(0);
+        BigDecimal price = totalSeat != null && totalSeat == 6
+                ? getBigDecimal(destination.get("price7"))
+                : getBigDecimal(destination.get("price5"));
+        if (price == null) {
+            price = getBigDecimal(destination.get("price5"));
+        }
+        return price == null ? 0.0D : price.doubleValue();
+    }
+
+    private BigDecimal getBigDecimal(Object value) {
+        if (value == null || ToolUtil.isEmpty(String.valueOf(value))) {
+            return null;
+        }
+        try {
+            return new BigDecimal(String.valueOf(value));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    private String getTotalSeatImage(Integer totalSeat) {
+        if (totalSeat == null) {
+            return null;
+        }
+        String fileName;
+        if (totalSeat == 4) {
+            fileName = "seat/seat_five.png";
+        } else if (totalSeat == 5) {
+            fileName = "seat/seat_six.png";
+        } else if (totalSeat == 6) {
+            fileName = "seat/seat_seven.png";
+        } else {
+            return null;
+        }
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName)) {
+            if (inputStream == null) {
+                return null;
+            }
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            byte[] buffer = new byte[4096];
+            int length;
+            while ((length = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, length);
+            }
+            return "data:image/png;base64," + Base64.getEncoder().encodeToString(outputStream.toByteArray());
+        } catch (Exception e) {
+            return null;
+        }
+    }
 }
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
index 74b172d..c6b59ce 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -31,6 +31,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -149,9 +150,8 @@
                 }
                 if(lineShift.getId().intValue() == Integer.valueOf(map.get("id").toString()).intValue()){
                     b = false;
-                    String content = String.valueOf(map.get("content"));
-                    JSONObject jsonObject = JSON.parseObject(content);
-                    map.put("price", jsonObject.getString("num1"));
+                    BigDecimal price = getDefaultDestinationPrice(map);
+                    map.put("price", price == null ? "0" : price.toPlainString());
                     data = map;
                     list.add(data);
                 }
@@ -165,6 +165,26 @@
         return list;
     }
 
+    private BigDecimal getDefaultDestinationPrice(Map<String, Object> map) {
+        if (map == null) {
+            return null;
+        }
+        Integer totalSeat = map.get("totalSeat") == null ? null : Integer.valueOf(map.get("totalSeat").toString());
+        BigDecimal price = totalSeat != null && totalSeat == 6 ? getBigDecimal(map.get("defaultPrice7")) : getBigDecimal(map.get("defaultPrice5"));
+        return price == null ? getBigDecimal(map.get("defaultPrice5")) : price;
+    }
+
+    private BigDecimal getBigDecimal(Object value) {
+        if (value == null || ToolUtil.isEmpty(String.valueOf(value))) {
+            return null;
+        }
+        try {
+            return new BigDecimal(String.valueOf(value));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
 
     /**
      * 根据司机排班数据id获取数据(剩余座位号和总座位数)
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index ed59a23..2461361 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -82,9 +82,6 @@
     private DateUtil dateUtil;
 
     @Resource
-    private LinePriceMapper linePriceMapper;
-
-    @Resource
     private LineMapper lineMapper;
 
     @Resource
@@ -255,6 +252,7 @@
                 serverMoney += income.getMoney();
             }
         }
+        String dispatchPhone = null;
         if (orderCrossCity.getLineId() <= -1) {
             LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
             DriverSelfTrip driverSelfTrip = driverSelfTripMapper.selectById(lineShiftDriver.getCustomerId());
@@ -262,8 +260,9 @@
             map.put("lineId", orderCrossCity.getLineId());
         } else {
             Line line = lineService.selectById(orderCrossCity.getLineId());
-            map.put("line", line.getName());
+            map.put("line", line == null ? "" : line.getName());
             map.put("lineId", orderCrossCity.getLineId());
+            dispatchPhone = line == null ? null : line.getDispatchPhone();
         }
         map.put("peopleNumber", num);
         map.put("orderNumber", orderCrossCity.getOrderNum());
@@ -271,7 +270,7 @@
         map.put("serverMoney", new BigDecimal(serverMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
         OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
         Phone phone = phoneMapper.queryInfo(openCity == null ? 0 : openCity.getId(), 1, 1);
-        map.put("emergencyCall", null != phone ? phone.getPhone() : "110");
+        map.put("emergencyCall", StringUtils.isNotBlank(dispatchPhone) ? dispatchPhone : (null != phone ? phone.getPhone() : "110"));
         if (!order.isEmpty()){
             map.put("lineShiftDriverId", order.get(0).get("lineShiftDriverId"));
         }
@@ -1161,98 +1160,10 @@
         }
 
         Map<String, Object> map = new HashMap<>();
-        double distance1 = distance.doubleValue() / 1000;//公里
         map.put("distance", distance);
-
-        /**
-         * 1.固定价格的包车是整车价格
-         * 2.五座车和七座车的优惠系数是中间特殊位置的优惠折扣
-         * 3.包车的情况不享受中间特殊位置的优惠折扣
-         * 4.浮动计费拼车如果选中中间特殊位置既享受优惠系数又享受中间特殊位置的优惠折扣
-         */
-        Map<String, Object> query = linePriceMapper.query(lineId, serverCarModelId);
-        if(null == query){
-            map.put("distance", 0);
-            map.put("price", 0);
-            return ResultUtil.success(map);
-        }
-        String content = query.get("content").toString();
-        JSONObject jsonObject = JSON.parseObject(content);
-        if(Integer.valueOf(query.get("type").toString()) == 1){//固定金额
-            double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();
-            double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();
-            double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();
-            double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();
-            if(travelMode == 1){//拼车
-                String[] split = seatNumber.split(",");
-                boolean b = false;
-                for(String s : split){
-                    if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){
-                        b = true;
-                        break;
-                    }
-                }
-                double price1 = 0D;
-                if(b){
-                    price1 = num1 * (totalSeat == 4 ? num3 : num4);
-                    peopleNumber -= 1;
-                }
-                double price = (num1 * peopleNumber) + price1;
-                map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            }else{
-                map.put("price", num2);//包车价
-            }
-
-        }else{//浮动计费
-            //计算公式:实际历程 * 基础单价 * (参考费用 / (参考里程 * 基础单价)) + (实际历程 - 参考里程) * 基础单价 * 优惠系数
-            double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考价格
-            double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();//参考里程
-            double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();//保底价
-            double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();//超出参考里程优惠系数
-            double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//低于参考里程优惠系数
-            double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//包车系数
-            double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//五座系数
-            double num8 = Double.valueOf(jsonObject.getString("num8")).doubleValue();//七座系数
-
-
-            /**
-             * 1、实际里程>=参考里程
-             *    参考价+((实际里程-参考里程)*(参考价/参考里程)*超出参考里程优惠系数)
-             *
-             * 2、实际里程<参考里程
-             *    参考价-(参考里程-实际路程)*(参考价/参考里程)*低于参考里程优惠系数
-             */
-            double unitPrice = 0d;
-            if(distance1 > num2){//1
-                unitPrice = num1 + ((distance1 - num2) * (num1 / num2) * num4);
-            }
-            if(distance1 < num2){//2
-                unitPrice = num1 - ((num2 - distance1) * (num1 / num2) * num5);
-            }
-            if(distance1 == num2){
-                unitPrice = num1;
-            }
-            if(travelMode == 1){//拼车
-                String[] split = seatNumber.split(",");
-                boolean b = false;
-                for(String s : split){
-                    if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){
-                        b = true;
-                        break;
-                    }
-                }
-                double price1 = 0D;
-                if(b){
-                    price1 = unitPrice * (totalSeat == 4 ? num7 : num8);
-                    peopleNumber -= 1;
-                }
-                double price = (unitPrice * peopleNumber) + price1;
-                map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            }else{
-                double price = unitPrice * totalSeat * num6;
-                map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            }
-        }
+        Integer pricePeopleNumber = travelMode != null && travelMode == 2 && totalSeat != null && totalSeat > 0 ? totalSeat : peopleNumber;
+        BigDecimal unitPrice = queryDefaultLineDestinationPrice(lineId, totalSeat);
+        map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, pricePeopleNumber).doubleValue());
         return ResultUtil.success(map);
     }
 
@@ -1285,10 +1196,7 @@
             Map<String, Object> destination = lineMapper.queryLineDestinationById(lineDestinationId, lineId);
             BigDecimal unitPrice = null;
             if (destination != null) {
-                unitPrice = totalSeat != null && totalSeat == 6 ? getBigDecimal(destination.get("price7")) : getBigDecimal(destination.get("price5"));
-                if (unitPrice == null) {
-                    unitPrice = getBigDecimal(destination.get("price5"));
-                }
+                unitPrice = getDestinationPrice(destination, totalSeat);
             }
             map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, peopleNumber).doubleValue());
             return ResultUtil.success(map);
@@ -1310,18 +1218,15 @@
             map.put("price", -1);
             return ResultUtil.success(map);
         }
-        BigDecimal defaultPrice5 = getBigDecimal(destinations.get(0).get("price5"));
+        BigDecimal defaultPrice = getDestinationPrice(destinations.get(0), totalSeat);
         BigDecimal matchedPrice = null;
         for (Map<String, Object> destination : destinations) {
             if (isPointInDestinationFence(destination, endLon, endLat)) {
-                matchedPrice = totalSeat != null && totalSeat == 6 ? getBigDecimal(destination.get("price7")) : getBigDecimal(destination.get("price5"));
-                if (matchedPrice == null) {
-                    matchedPrice = getBigDecimal(destination.get("price5"));
-                }
+                matchedPrice = getDestinationPrice(destination, totalSeat);
                 break;
             }
         }
-        BigDecimal finalPrice = matchedPrice == null ? defaultPrice5 : matchedPrice;
+        BigDecimal finalPrice = matchedPrice == null ? defaultPrice : matchedPrice;
         map.put("price", finalPrice == null ? -1 : multiplyPeopleNumber(finalPrice, peopleNumber).doubleValue());
         return ResultUtil.success(map);
     }
@@ -1366,18 +1271,14 @@
         if (destinations == null || destinations.size() == 0) {
             return null;
         }
-        BigDecimal defaultPrice5 = getBigDecimal(destinations.get(0).get("price5"));
+        BigDecimal defaultPrice = getDestinationPrice(destinations.get(0), lineShiftDriver.getTotalSeat());
         for (Map<String, Object> destination : destinations) {
             if (isPointInDestinationFence(destination, endLon, endLat)) {
-                if (lineShiftDriver.getTotalSeat() != null && lineShiftDriver.getTotalSeat() == 6) {
-                    BigDecimal price7 = getBigDecimal(destination.get("price7"));
-                    return price7 == null ? defaultPrice5 : price7;
-                }
-                BigDecimal price5 = getBigDecimal(destination.get("price5"));
-                return price5 == null ? defaultPrice5 : price5;
+                BigDecimal price = getDestinationPrice(destination, lineShiftDriver.getTotalSeat());
+                return price == null ? defaultPrice : price;
             }
         }
-        return defaultPrice5;
+        return defaultPrice;
     }
 
     private boolean isPointInDestinationFence(Map<String, Object> destination, Double lon, Double lat) {
@@ -1441,6 +1342,24 @@
         }
     }
 
+    private BigDecimal queryDefaultLineDestinationPrice(Integer lineId, Integer totalSeat) {
+        List<Map<String, Object>> destinations = lineMapper.queryLineDestinations(lineId);
+        if (destinations == null || destinations.size() == 0) {
+            return null;
+        }
+        return getDestinationPrice(destinations.get(0), totalSeat);
+    }
+
+    private BigDecimal getDestinationPrice(Map<String, Object> destination, Integer totalSeat) {
+        if (destination == null) {
+            return null;
+        }
+        BigDecimal price = totalSeat != null && totalSeat == 6
+                ? getBigDecimal(destination.get("price7"))
+                : getBigDecimal(destination.get("price5"));
+        return price == null ? getBigDecimal(destination.get("price5")) : price;
+    }
+
     private BigDecimal multiplyPeopleNumber(BigDecimal price, Integer peopleNumber) {
         if (price == null || peopleNumber == null || peopleNumber <= 0) {
             return null;
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java
index 3ac135f..43aa011 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java
@@ -59,6 +59,9 @@
     @ApiModelProperty("总座位")
     private Integer totalSeat;
 
+    @ApiModelProperty("总座位图(Base64,可直接作为图片src)")
+    private String totalSeatImage;
+
     @ApiModelProperty("剩余座位")
     private Integer laveSeat;
 
diff --git a/DriverYKDTravel/guns-admin/src/main/resources/application-prod.yml b/DriverYKDTravel/guns-admin/src/main/resources/application-prod.yml
index bed97a3..82f11ae 100644
--- a/DriverYKDTravel/guns-admin/src/main/resources/application-prod.yml
+++ b/DriverYKDTravel/guns-admin/src/main/resources/application-prod.yml
@@ -112,7 +112,7 @@
 
 qyt:
     socket_uri: http://127.0.0.1:6000
-    admin_url: http://127.0.0.1:8080
+    admin_url: http://127.0.0.1:8010
 ---
 
 #支付回调地址
diff --git a/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_five.png b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_five.png
new file mode 100644
index 0000000..d0d41b7
--- /dev/null
+++ b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_five.png
Binary files differ
diff --git a/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_seven.png b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_seven.png
new file mode 100644
index 0000000..11e9709
--- /dev/null
+++ b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_seven.png
Binary files differ
diff --git a/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_six.png b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_six.png
new file mode 100644
index 0000000..f4b0c46
--- /dev/null
+++ b/DriverYKDTravel/guns-admin/src/main/resources/seat/seat_six.png
Binary files differ
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
index 52001e2..84186ac 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
@@ -539,6 +539,13 @@
     @RequestMapping(value = "/add")
     @ResponseBody
     public Object add(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String bindDriverId) {
+        String serviceModelError = validateCarServiceModel(serverBox, zcModel, kcModel);
+        if (serviceModelError != null) {
+            return ResultUtil.error(serviceModelError);
+        }
+        if (isCarLicensePlateExists(tCar.getCarLicensePlate())) {
+            return ResultUtil.error("车牌号已存在");
+        }
         if (1 == roleType){  //平台
             if (2 == companyType.intValue()){
                 if (SinataUtil.isNotEmpty(oneId)){
@@ -678,6 +685,10 @@
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String bindDriverId) {
+        String serviceModelError = validateCarServiceModel(serverBox, zcModel, kcModel);
+        if (serviceModelError != null) {
+            return ResultUtil.error(serviceModelError);
+        }
         if (1 == roleType){  //平台
             if (2 == companyType.intValue()){
                 if (SinataUtil.isNotEmpty(oneId)){
@@ -787,6 +798,53 @@
             }
         }).start();
         return ResultUtil.success();
+    }
+
+    private String validateCarServiceModel(String serverBox, String zcModel, String kcModel) {
+        if (hasCarServiceType(serverBox, "1") && !isPositiveInteger(zcModel)) {
+            return "请选择快车车型";
+        }
+        if (hasCarServiceType(serverBox, "3") && !isPositiveInteger(kcModel)) {
+            return "请选择跨城出行车型";
+        }
+        return null;
+    }
+
+    private boolean hasCarServiceType(String serverBox, String serviceType) {
+        if (isBlank(serverBox)) {
+            return false;
+        }
+        String[] serverArray = serverBox.split(",");
+        for (String item : serverArray) {
+            if (serviceType.equals(item.trim())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isBlank(String value) {
+        return value == null || value.trim().length() == 0;
+    }
+
+    private boolean isCarLicensePlateExists(String carLicensePlate) {
+        if (isBlank(carLicensePlate)) {
+            return false;
+        }
+        return tCarService.selectCount(new EntityWrapper<TCar>()
+                .eq("carLicensePlate", carLicensePlate.trim())
+                .ne("state", 2)) > 0;
+    }
+
+    private boolean isPositiveInteger(String value) {
+        if (isBlank(value)) {
+            return false;
+        }
+        try {
+            return Integer.valueOf(value) > 0;
+        } catch (NumberFormatException e) {
+            return false;
+        }
     }
 
 
@@ -1142,6 +1200,10 @@
                         }
                     }
 
+                    if (isCarLicensePlateExists(twelve)) {
+                        return new ErrorTip(500, "车牌号已存在:" + twelve);
+                    }
+
                     //添加车辆对象
                     TCar car = new TCar();
                     if ("平台车辆".equals(zero)){
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
index 655af48..427221b 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
@@ -71,21 +71,15 @@
 	@Autowired
 	private ITDriverServiceService tDriverServiceService;
 
+	@Autowired
+	private IDriverWorkService driverWorkService;
+
     @Autowired
     private ITCarService tCarService;
 
     @Autowired
     private ITCarServiceService tCarServiceService;
 
-	@Autowired
-	private ITOrderPrivateCarService orderPrivateCarService;
-
-	@Autowired
-	private ITOrderTaxiService orderTaxiService;
-
-	@Autowired
-	private ITOrderCrossCityService orderCrossCityService;
-	
 	@Value("${pushMinistryOfTransport}")
 	private boolean pushMinistryOfTransport;
 	
@@ -376,6 +370,7 @@
 	    if (commissionError != null) {
 		    return commissionError;
 	    }
+	    tCompany.setIsNeedFerry(2);
 	    tCompany.setType(2);  //2:分公司
 	    tCompany.setState(0); //0:正常
 	    tCompany.setFlag("1");
@@ -472,6 +467,7 @@
 	    if (commissionError != null) {
 		    return commissionError;
 	    }
+	    tCompany.setIsNeedFerry(2);
 	    User user = userService.selectById(userId);
 	    if(null != user && ToolUtil.isNotEmpty(password)){
 		    user.setPassword(ShiroKit.md5(password, user.getSalt()));
@@ -481,9 +477,9 @@
 	    // ========== 级联更新逻辑 ==========
 	    TCompany oldCompany = tCompanyService.selectById(tCompany.getId());
 	    if (oldCompany != null && oldCompany.getType() == 2) {
-		    String unfinishedOrderError = validateCancelledServiceUnfinishedOrders(oldCompany, tCompany, true);
-		    if (unfinishedOrderError != null) {
-			    return unfinishedOrderError;
+		    String driverServiceError = validateCancelledServiceDriverUsage(oldCompany, tCompany, true);
+		    if (driverServiceError != null) {
+			    return driverServiceError;
 		    }
 		    // 1. 检测并级联更新经营业务
 		    cascadeUpdateBusinessScope(oldCompany, tCompany);
@@ -532,10 +528,11 @@
 	    if (commissionError != null) {
 		    return commissionError;
 	    }
+	    tCompany.setIsNeedFerry(2);
 	    TCompany oldCompany = tCompanyService.selectById(tCompany.getId());
-	    String unfinishedOrderError = validateCancelledServiceUnfinishedOrders(oldCompany, tCompany, false);
-	    if (unfinishedOrderError != null) {
-		    return unfinishedOrderError;
+	    String driverServiceError = validateCancelledServiceDriverUsage(oldCompany, tCompany, false);
+	    if (driverServiceError != null) {
+		    return driverServiceError;
 	    }
 	    tCompany.setUpdateTime(new Date());
 //	    tCompany.setVersion(tCompany.getVersion() + 1);
@@ -572,6 +569,7 @@
 	    if (commissionError != null) {
 		    return commissionError;
 	    }
+	    tCompany.setIsNeedFerry(2);
 	    tCompany.setType(3);  //2:分公司
 	    if (ShiroKit.getUser().getRoleType() == 2) {
 		    tCompany.setSuperiorId(ShiroKit.getUser().getObjectId());
@@ -776,7 +774,7 @@
 		return false;
 	}
 
-	private String validateCancelledServiceUnfinishedOrders(TCompany oldCompany, TCompany newCompany, boolean includeFranchisee) {
+	private String validateCancelledServiceDriverUsage(TCompany oldCompany, TCompany newCompany, boolean includeFranchisee) {
 		if (oldCompany == null || newCompany == null) {
 			return null;
 		}
@@ -788,14 +786,10 @@
 		if (driverIds.isEmpty()) {
 			return null;
 		}
-		if (cancelledTypes.contains(1) && hasUnfinishedPrivateCarOrder(driverIds)) {
-			return "当前公司内司机存在快车未完成订单,无法变动";
-		}
-		if (cancelledTypes.contains(2) && hasUnfinishedTaxiOrder(driverIds)) {
-			return "当前公司内司机存在出租车未完成订单,无法变动";
-		}
-		if (cancelledTypes.contains(3) && hasUnfinishedCrossCityOrder(driverIds)) {
-			return "当前公司内司机存在跨城出行未完成订单,无法变动";
+		for (Integer cancelledType : cancelledTypes) {
+			if (hasDriverWorkingService(driverIds, cancelledType)) {
+				return "当前公司内存在司机正在使用" + getServiceName(cancelledType) + "业务,无法变动";
+			}
 		}
 		return null;
 	}
@@ -843,25 +837,27 @@
 		}
 	}
 
-	private boolean hasUnfinishedPrivateCarOrder(List<Integer> driverIds) {
-		return orderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
-			.eq("isDelete", 1)
+	private boolean hasDriverWorkingService(List<Integer> driverIds, Integer serviceType) {
+		if (driverIds == null || driverIds.isEmpty() || serviceType == null) {
+			return false;
+		}
+		return driverWorkService.selectCount(new EntityWrapper<DriverWork>()
 			.in("driverId", driverIds)
-			.notIn("state", 8, 9, 10, 12)) > 0;
+			.eq("state", 1)
+			.like("type", String.valueOf(serviceType))) > 0;
 	}
 
-	private boolean hasUnfinishedTaxiOrder(List<Integer> driverIds) {
-		return orderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
-			.eq("isDelete", 1)
-			.in("driverId", driverIds)
-			.notIn("state", 8, 9, 10, 12)) > 0;
-	}
-
-	private boolean hasUnfinishedCrossCityOrder(List<Integer> driverIds) {
-		return orderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
-			.eq("isDelete", 1)
-			.in("driverId", driverIds)
-			.notIn("state", 8, 9, 10, 12)) > 0;
+	private String getServiceName(Integer serviceType) {
+		if (Integer.valueOf(1).equals(serviceType)) {
+			return "快车";
+		}
+		if (Integer.valueOf(2).equals(serviceType)) {
+			return "出租车";
+		}
+		if (Integer.valueOf(3).equals(serviceType)) {
+			return "跨城出行";
+		}
+		return "";
 	}
 
 	/**
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysReformistController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysReformistController.java
index a665c8c..e791c49 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysReformistController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysReformistController.java
@@ -756,7 +756,7 @@
 
         ///  节假日服务费
         if("holidayServiceFeeSetting".equals(type)) {
-	        Integer companyId = ShiroKit.getUser().getObjectId();
+	        companyId = ShiroKit.getUser().getObjectId();
 	        TCompany company = companyService.selectById(companyId);
 	        company.setHolidayFee(holidayFee);
 	        companyService.updateById(company);
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
index 47d814b..1bd6cc4 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
@@ -51,14 +51,8 @@
     private ITSiteService itSiteService;
 
     @Autowired
-    private ITServerCarmodelService itServerCarmodelService;
-
-    @Autowired
     private ITLineSiteService itLineSiteService;
 
-    @Autowired
-    private ITLinePriceService itLinePriceService;
-    
     @Autowired
     private ITLineShiftService itLineShiftService;
 
@@ -117,9 +111,6 @@
         List<TSite> siteList = itSiteService.selectList(new EntityWrapper<TSite>().eq("state", 1)
                 .eq(null != companyId, "companyId", companyId));
         model.addAttribute("siteList",siteList);
-        //跨城车型
-        List<TServerCarmodel> carmodelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 2).eq("state", 1));
-        model.addAttribute("carmodelList",carmodelList);
         return PREFIX + "tLine_add.html";
     }
 
@@ -173,12 +164,6 @@
         List<TSite> siteList = itSiteService.selectList(new EntityWrapper<TSite>().eq("state", 1)
                 .eq(null != companyId, "companyId", companyId));
         model.addAttribute("siteList",siteList);
-        //跨城车型
-        List<TServerCarmodel> carmodelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 2).eq("state", 1));
-        model.addAttribute("carmodelList",carmodelList);
-        //查询所有站点
-        List<Map<String, Object>> linePriceList = tLineService.getLinePriceList(tLineId);
-        model.addAttribute("linePriceList",linePriceList);
         //查询所有班次
         List<TLineShift> lineShiftList = itLineShiftService.selectList(new EntityWrapper<TLineShift>().eq("lineId", tLineId).last(" and not FIND_IN_SET(state,'3')"));
         model.addAttribute("lineShiftList",lineShiftList);
@@ -194,7 +179,7 @@
      */
     @RequestMapping(value = "/list")
     @ResponseBody
-    public Object list(String insertTime,String name,String insertUser,String modelStr,Integer state) {
+    public Object list(String insertTime,String name,String insertUser,Integer state) {
         String beginTime = null;
         String endTime = null;
         if (SinataUtil.isNotEmpty(insertTime)) {
@@ -207,7 +192,7 @@
         if(ShiroKit.getUser().getRoleType() != 1){
             companyId = ShiroKit.getUser().getObjectId();
         }
-        page.setRecords(tLineService.getLineList(page, beginTime, endTime, name, insertUser, modelStr, state, companyId));
+        page.setRecords(tLineService.getLineList(page, beginTime, endTime, name, insertUser, state, companyId));
         return super.packForBT(page);
     }
 
@@ -242,7 +227,7 @@
      */
     @RequestMapping(value = "/add")
     @ResponseBody
-    public ResultUtil add(TLine tLine,Integer startSiteId,Integer endSiteId,@RequestParam String subArr,
+    public ResultUtil add(TLine tLine,Integer startSiteId,Integer endSiteId,@RequestParam(required = false) String subArr,
                           @RequestParam String shuArr, @RequestParam(required = false) String destArr) {
         if (!hasCommissionSetting(tLine.getOutSetting())) {
             return ResultUtil.error("请设置司机抽成");
@@ -284,9 +269,6 @@
         end.setSiteId(endSiteId);
         end.setType(2);
         itLineSiteService.insert(end);
-
-        //添加价格设置
-        addPrice(tLine.getId(), subArr);
 
         //添加班次设置
         ResultUtil shiftResult = addShift(tLine.getId(), shuArr);
@@ -368,29 +350,6 @@
         }catch (Exception e){
             e.printStackTrace();
             return ResultUtil.runErr();
-        }
-    }
-
-    /**
-     * 添加线路价格
-     * @param lineId
-     * @param subArr
-     */
-    private void addPrice(Integer lineId, @RequestParam String subArr) {
-        JSONArray jsonArray = JSON.parseArray(subArr);
-        int size = jsonArray.size();
-        for (int i = 0; i < size; i++) {
-            JSONObject jsonObject = jsonArray.getJSONObject(i);
-            TLinePrice price = new TLinePrice();
-            price.setLineId(lineId);
-            price.setServerCarModelId(jsonObject.getInteger("serverModelId"));
-            price.setType(jsonObject.getInteger("type"));
-            price.setContent(jsonObject.getString("content"));
-            price.setContentStr(jsonObject.getString("contentStr"));
-            price.setState(1);
-            price.setInsertTime(new Date());
-            price.setAddTime(jsonObject.getString("time"));
-            itLinePriceService.insert(price);
         }
     }
 
@@ -767,7 +726,7 @@
      */
     @RequestMapping(value = "/update")
     @ResponseBody
-    public ResultUtil update(TLine tLine,Integer startSiteId,Integer endSiteId,@RequestParam String subArr,
+    public ResultUtil update(TLine tLine,Integer startSiteId,Integer endSiteId,@RequestParam(required = false) String subArr,
                              @RequestParam String shuArr, @RequestParam(required = false) String destArr) {
         if (!hasCommissionSetting(tLine.getOutSetting())) {
             return ResultUtil.error("请设置司机抽成");
@@ -823,10 +782,6 @@
             itLineSiteService.insert(end);
         }
 
-        //删除线路价格
-        itLinePriceService.delete(new EntityWrapper<TLinePrice>().eq("lineId",tLine.getId()));
-        //添加价格设置
-        addPrice(tLine.getId(), subArr);
         //删除线路班次
         itLineShiftService.delete(new EntityWrapper<TLineShift>().eq("lineId",tLine.getId()));
         //添加班次设置
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
index 6320ea4..ce93560 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
@@ -236,7 +236,7 @@
                     shellList.add("-");
                 }
 
-                // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单
+                // 1:APP下单,2:扫码下单,3:小程序下单,4:预约订单,5:调度下单
                 if(SinataUtil.isNotEmpty(object.get("orderSource"))){
                     switch (object.get("orderSource").toString()){
                         case "1":
@@ -249,7 +249,7 @@
                             shellList.add("小程序下单");
                             break;
                         case "4":
-                            shellList.add("司机下单");
+                            shellList.add("预约订单");
                             break;
                         case "5":
                             shellList.add("调度下单");
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TLineMapper.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TLineMapper.java
index 9ba8b00..786f15a 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TLineMapper.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TLineMapper.java
@@ -27,16 +27,8 @@
                                          @Param("endTime") String endTime,
                                          @Param("name") String name,
                                          @Param("insertUser") String insertUser,
-                                         @Param("modelStr") String modelStr,
                                          @Param("state") Integer state,
                                          @Param("companyId") Integer companyId);
-
-    /**
-     * 根据线路ID查询线路价格
-     * @param lineId
-     * @return
-     */
-    List<Map<String,Object>> getLinePriceList(@Param("lineId") Integer lineId);
 
     /**
      * 根据线路ID查询线路已分配公司
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TLineMapper.xml b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TLineMapper.xml
index b5fd26e..8690bd0 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TLineMapper.xml
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TLineMapper.xml
@@ -20,11 +20,7 @@
 
     <!--根据条件查询线路列表-->
     <select id="getLineList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page">
-        SELECT * FROM (SELECT model.modelStr,IFNULL(ls.num,0) as shiftNum,su.`name` as insertUser,IFNULL(lc.num,0) as companyNum,ll.* FROM t_line as ll
-        LEFT JOIN (
-        SELECT GROUP_CONCAT(sc.`name` SEPARATOR '、') as modelStr,lp.lineId FROM t_line_price as lp
-        LEFT JOIN t_server_carmodel as sc on sc.id = lp.serverCarModelId
-        where sc.type = 2 and lp.state != 3 GROUP BY lp.lineId) as model on model.lineId = ll.id
+        SELECT * FROM (SELECT IFNULL(ls.num,0) as shiftNum,su.`name` as insertUser,IFNULL(lc.num,0) as companyNum,ll.* FROM t_line as ll
         LEFT JOIN (SELECT COUNT(id) as num,lineId FROM t_line_shift where state != 3 GROUP BY lineId) as ls on ls.lineId = ll.id
         LEFT JOIN sys_user as su on su.id = ll.insertUserId
         LEFT JOIN (SELECT COUNT(id) as num,lineId FROM t_line_company GROUP BY lineId) as lc on lc.lineId = ll.id
@@ -40,9 +36,6 @@
             <if test="insertUser != null and insertUser != ''">
                 and o.insertUser LIKE CONCAT('%',#{insertUser},'%')
             </if>
-            <if test="modelStr != null and modelStr != ''">
-                and o.modelStr LIKE CONCAT('%',#{modelStr},'%')
-            </if>
             <if test="state != null and state != ''">
                 and o.state = #{state}
             </if>
@@ -51,13 +44,6 @@
             </if>
         </where>
         order by o.id desc
-    </select>
-
-    <!--根据线路ID查询线路价格-->
-    <select id="getLinePriceList" resultType="java.util.Map">
-        SELECT sc.`name`,lp.* FROM t_line_price as lp
-        LEFT JOIN t_server_carmodel as sc on sc.id = lp.serverCarModelId
-        where lp.lineId = #{lineId} and lp.state != 3
     </select>
 
     <!--根据线路ID查询线路已分配公司-->
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
index 830b6ee..b2f0583 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
@@ -222,7 +222,7 @@
         case when ot.orderSource = 1 then 'APP下单'
         when ot.orderSource = 2 then '扫码下单'
         when ot.orderSource = 3 then '小程序下单'
-        when ot.orderSource = 4 then '司机下单'
+        when ot.orderSource = 4 then '预约订单'
         when ot.orderSource = 5 then '调度下单' else '' end orderSourceStr,
         ui.nickName as userName,ui.phone as userPhone,
         case when ot.payType = 1 then '微信'
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITLineService.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITLineService.java
index 6f055e0..99d023d 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITLineService.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITLineService.java
@@ -27,16 +27,8 @@
                                          @Param("endTime") String endTime,
                                          @Param("name") String name,
                                          @Param("insertUser") String insertUser,
-                                         @Param("modelStr") String modelStr,
                                          @Param("state") Integer state,
                                          @Param("companyId") Integer companyId);
-
-    /**
-     * 根据线路ID查询线路价格
-     * @param lineId
-     * @return
-     */
-    List<Map<String,Object>> getLinePriceList(@Param("lineId") Integer lineId);
 
     /**
      * 根据线路ID查询线路已分配公司
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TLineServiceImpl.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TLineServiceImpl.java
index d5d807d..91891c6 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TLineServiceImpl.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TLineServiceImpl.java
@@ -23,13 +23,8 @@
 
     @Override
     public List<Map<String, Object>> getLineList(Page<Map<String, Object>> page, String beginTime, String endTime, String name,
-                                                 String insertUser, String modelStr, Integer state, Integer companyId) {
-        return this.baseMapper.getLineList(page, beginTime, endTime, name, insertUser, modelStr, state, companyId);
-    }
-
-    @Override
-    public List<Map<String, Object>> getLinePriceList(Integer lineId) {
-        return this.baseMapper.getLinePriceList(lineId);
+                                                 String insertUser, Integer state, Integer companyId) {
+        return this.baseMapper.getLineList(page, beginTime, endTime, name, insertUser, state, companyId);
     }
 
     @Override
diff --git a/ManagementYKDTravel/guns-admin/src/main/resources/application-dev.yml b/ManagementYKDTravel/guns-admin/src/main/resources/application-dev.yml
index 5a73752..7d8d6a3 100644
--- a/ManagementYKDTravel/guns-admin/src/main/resources/application-dev.yml
+++ b/ManagementYKDTravel/guns-admin/src/main/resources/application-dev.yml
@@ -13,8 +13,8 @@
   spring-session-open: true      #是否开启spring session,如果是多机环境需要开启(true/false)
   session-invalidate-time: 1800     #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
   session-validation-interval: 900  #多久检测一次失效的session(只在单机环境下生效) 单位:秒
-  file-upload-path: D:\tmp\ #文件上传目录(不配置的话为java.io.tmpdir目录)
-  picture-server-address: http://221.182.45.100:8881/  #图片服务器地址
+  file-upload-path: /home/yuekeduo/server/resources #文件上传目录(不配置的话为java.io.tmpdir目录)
+  picture-server-address: https://rideapi.yuekeduo.com.cn/resources/  #图片服务器地址
   rest-url: http://139.9.249.67:8080/rest/    #前端接口调用基础路径
 
 
@@ -40,9 +40,9 @@
     store-type: redis
     timeout: 7200
   redis:
-    host: 192.168.110.80
-    port: 6379
-    password: 123456
+    host: 127.0.0.1
+    port: 6410
+    password: Qnz_jt@20#25
     database: 0
     timeout: 1000
 
@@ -56,14 +56,12 @@
     log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置
 
 ---
-
----
 spring:
   datasource:
-    url: jdbc:mysql://192.168.110.80:3306/yuekeduo2.0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:8066/yuekeduo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-    password: 123456
-    db-name: qyttravel #用来搜集数据库的所有表
+    password: YueKeDuo@2026!.
+    db-name: yuekeduo #用来搜集数据库的所有表
     filters: wall,mergeStat
 
 
@@ -71,7 +69,11 @@
 spring:
   data:
     mongodb:
-      uri: mongodb://192.168.110.80:27117/traveling_track
+      host: 127.0.0.1
+      port: 27009
+      username: qnjt_ridingmgdb
+      password: qnjtriding@Prom2025
+      database: qnjt_ridingmgdb
 
 
 ---
@@ -108,12 +110,9 @@
 
 
 
-
 cos:
   secretId: AKIDofP7ezSmvtiNtDMLExUpALJCya0EHG3e
   secretKey: Sp481pRrRpBQzOekfPzPgmhR0GV9oKem
   region: ap-shanghai
   bucketName: cb-1358396420
-  baseUrl: https://cb-1358396420.cos.ap-shanghai.mvacloud.com
-
-
+  baseUrl: https://cb-1358396420.cos.ap-shanghai.mvacloud.com
\ No newline at end of file
diff --git a/ManagementYKDTravel/guns-admin/src/main/resources/application-prod.yml b/ManagementYKDTravel/guns-admin/src/main/resources/application-prod.yml
index 264d0a4..64dbe2e 100644
--- a/ManagementYKDTravel/guns-admin/src/main/resources/application-prod.yml
+++ b/ManagementYKDTravel/guns-admin/src/main/resources/application-prod.yml
@@ -13,8 +13,8 @@
   spring-session-open: true      #是否开启spring session,如果是多机环境需要开启(true/false)
   session-invalidate-time: 1800     #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
   session-validation-interval: 900  #多久检测一次失效的session(只在单机环境下生效) 单位:秒
-  file-upload-path: C:\Users\hi\Desktop\ #文件上传目录(不配置的话为java.io.tmpdir目录)
-  picture-server-address: http://192.168.0.43/resources/  #图片服务器地址
+  file-upload-path: /home/yuekeduo/server/resources #文件上传目录(不配置的话为java.io.tmpdir目录)
+  picture-server-address: https://rideapi.yuekeduo.com.cn/resources/  #图片服务器地址
   rest-url: http://139.9.249.67:8080/rest/    #前端接口调用基础路径
 
 
diff --git a/ManagementYKDTravel/guns-admin/src/main/resources/application-test.yml b/ManagementYKDTravel/guns-admin/src/main/resources/application-test.yml
index 4cb2515..bfd1f66 100644
--- a/ManagementYKDTravel/guns-admin/src/main/resources/application-test.yml
+++ b/ManagementYKDTravel/guns-admin/src/main/resources/application-test.yml
@@ -13,8 +13,8 @@
   spring-session-open: true      #是否开启spring session,如果是多机环境需要开启(true/false)
   session-invalidate-time: 1800     #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
   session-validation-interval: 900  #多久检测一次失效的session(只在单机环境下生效) 单位:秒
-  file-upload-path: C:\Users\hi\Desktop\ #文件上传目录(不配置的话为java.io.tmpdir目录)
-  picture-server-address: http://192.168.0.43/resources/  #图片服务器地址
+  file-upload-path: /home/yuekeduo/server/resources #文件上传目录(不配置的话为java.io.tmpdir目录)
+  picture-server-address: https://rideapi.yuekeduo.com.cn/resources/  #图片服务器地址
   rest-url: http://139.9.249.67:8080/rest/    #前端接口调用基础路径
 
 
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_add.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_add.html
index 57105bc..d4fd5e4 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_add.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_add.html
@@ -7,6 +7,7 @@
                     <#input id="name" name="类型名称" />
                     <#select id="seat" name="座位数:">
                         <option value="5">5座</option>
+                        <option value="6">6座</option>
                         <option value="7">7座</option>
                     </#select>
                     <#select id="brandId" name="所属车辆品牌:" >
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_edit.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_edit.html
index d6c7db8..3dca04b 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_edit.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel_edit.html
@@ -8,6 +8,7 @@
                     <#input id="name" name="类型名称" value="${item.name}"/>
                     <#select id="seat" name="座位数:">
                         <option value="5" ${5 == item.seat ? 'selected=selected' : ''}>5座</option>
+                        <option value="6" ${6 == item.seat ? 'selected=selected' : ''}>6座</option>
                         <option value="7" ${7 == item.seat ? 'selected=selected' : ''}>7座</option>
                     </#select>
                     <#select id="brandId" name="所属车辆品牌:" >
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_add.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_add.html
index 53fe8ad..dfe38f1 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_add.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_add.html
@@ -237,15 +237,15 @@
 							</div>
 						</div>
 					</div>
-					<div class="form-group">
+					<div class="form-group" style="display: none;">
 						<label class="col-sm-2 control-label">是否需要摆渡车:</label>
 						<div class="col-sm-9" style="display: flex;align-items: center;">
 							<div class="radio radio-info radio-inline">
-								<input checked="" id="isNeedFerry1" name="isNeedFerry" type="radio" value="1">
+								<input id="isNeedFerry1" name="isNeedFerry" type="radio" value="1">
 								<label for="isNeedFerry1"> 是 </label>
 							</div>
 							<div class="radio radio-success radio-inline">
-								<input id="isNeedFerry2" name="isNeedFerry" type="radio" value="2">
+								<input checked="" id="isNeedFerry2" name="isNeedFerry" type="radio" value="2">
 								<label for="isNeedFerry2"> 否 </label>
 							</div>
 						</div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_addFranchisee.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_addFranchisee.html
index f6194d3..8ee4322 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_addFranchisee.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_addFranchisee.html
@@ -169,15 +169,15 @@
                             </div>
                         </div>
                     </div>
-                    <div class="form-group">
+                    <div class="form-group" style="display: none;">
                         <label class="col-sm-3 control-label">是否需要摆渡车:</label>
                         <div class="col-sm-9"  style="display: flex;align-items: center;">
                             <div class="radio radio-info radio-inline">
-                                <input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry" checked="" >
+                            <input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry">
                                 <label for="isNeedFerry1"> 是 </label>
                             </div>
                             <div class="radio radio-success radio-inline">
-                                <input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" >
+                            <input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" checked="checked">
                                 <label for="isNeedFerry2"> 否 </label>
                             </div>
                         </div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detail.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detail.html
index f5028d5..1540534 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detail.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detail.html
@@ -211,7 +211,7 @@
                         </div>
                     </div>
 
-                    <div class="form-group">
+                    <div class="form-group" style="display: none;">
                         <label class="col-sm-2 control-label">是否需要摆渡车:</label>
                         <div class="col-sm-9"  style="display: flex;align-items: center;">
                             <div class="radio radio-info radio-inline">
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detailFranchisee.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detailFranchisee.html
index 76563d1..4e7eca9 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detailFranchisee.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_detailFranchisee.html
@@ -121,7 +121,7 @@
 						</fieldset>
 					</div>
 				</div>
-				<div class="form-group">
+				<div class="form-group" style="display: none;">
 					<label class="col-sm-3 control-label">是否需要摆渡车:</label>
 					<div class="col-sm-9" style="display: flex;align-items: center;">
 						<div class="radio radio-info radio-inline">
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html
index f2a2b3a..97613a4 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_edit.html
@@ -251,17 +251,15 @@
 						</div>
 					</div>
 				</div>
-				<div class="form-group col-sm-12">
+				<div class="form-group col-sm-12" style="display: none;">
 					<label class="col-sm-2 control-label">是否需要摆渡车:</label>
 					<div class="col-sm-9" style="display: flex;align-items: center;">
 						<div class="radio radio-info radio-inline">
-							<input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry" ${1== item.isNeedFerry ?
-							'checked=checked' : ''} >
+							<input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry">
 							<label for="isNeedFerry1"> 是 </label>
 						</div>
 						<div class="radio radio-success radio-inline">
-							<input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" ${2== item.isNeedFerry ?
-							'checked=checked' : ''}>
+							<input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" checked="checked">
 							<label for="isNeedFerry2"> 否 </label>
 						</div>
 					</div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_updateFranchisee.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_updateFranchisee.html
index ceaed53..9980b28 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_updateFranchisee.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCompany/tCompany_updateFranchisee.html
@@ -175,17 +175,15 @@
 							</div>
 						</div>
 					</div>
-					<div class="form-group">
+					<div class="form-group" style="display: none;">
 						<label class="col-sm-3 control-label">是否需要摆渡车:</label>
 						<div class="col-sm-9" style="display: flex;align-items: center;">
 							<div class="radio radio-info radio-inline">
-								<input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry" ${1== item.isNeedFerry ?
-								'checked=checked' : ''} >
+							<input type="radio" id="isNeedFerry1" value="1" name="isNeedFerry">
 								<label for="isNeedFerry1"> 是 </label>
 							</div>
 							<div class="radio radio-success radio-inline">
-								<input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" ${2== item.isNeedFerry ?
-								'checked=checked' : ''}>
+							<input type="radio" id="isNeedFerry2" value="2" name="isNeedFerry" checked="checked">
 								<label for="isNeedFerry2"> 否 </label>
 							</div>
 						</div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine.html
index 8c5671d..a58e402 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine.html
@@ -19,9 +19,6 @@
                                 <#NameCon id="insertUser" name="创建者" />
                             </div>
                             <div class="col-sm-3">
-                                <#NameCon id="modelStr" name="关联车型" />
-                            </div>
-                            <div class="col-sm-3">
                                 <#SelectCon id="state" name="状态" >
                                     <option value="">全部</option>
                                     <option value="1">正常</option>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html
index f477db5..4c3c360 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html
@@ -186,93 +186,6 @@
 
             <div class="row" style="margin-top: 30px;">
                 <div class="col-sm-4">
-                    <h2 style="font-weight: 700;">价格设置</h2>
-                </div>
-            </div>
-
-            <div class="row">
-                <div class="col-sm-11">
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">选择车型:</label>
-                        <div class="col-sm-2">
-                            <select class="form-control" id="serverModelId" >
-                                <option value="">选择车型</option>
-                                @for(obj in carmodelList){
-                                <option value="${obj.id}">${obj.name}</option>
-                                @}
-                            </select>
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">选择车型:</label>
-                        <div class="col-sm-2"  style="display: flex;align-items: center;">
-                            <div class="radio radio-info radio-inline">
-                                <input type="radio" id="type1" value="1" name="type" checked="" onclick="TLineInfoDlg.typeClick(1)">
-                                <label for="type1"> 固定计价 </label>
-                            </div>
-                            <div class="radio radio-success radio-inline">
-                                <input type="radio" id="type2" value="2" name="type" onclick="TLineInfoDlg.typeClick(2)">
-                                <label for="type2"> 浮动计价 </label>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="form-group" id="fixedDiv">
-                        <label class="col-sm-2 control-label">固定计价:</label>
-                        <div class="col-sm-10">
-                            单人价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num1" id="num1" class="form-control newWidth" />&nbsp;元;
-                            包车价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num2" id="num2" class="form-control newWidth" />&nbsp;元;<br><br>
-                            五座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num3" id="num3" class="form-control newWidth" />&nbsp;;
-                            七座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num4" id="num4" class="form-control newWidth" />&nbsp;;
-                        </div>
-                    </div>
-
-                    <div class="form-group" id="floatDiv" style="display: none;">
-                        <label class="col-sm-2 control-label">浮动计价:</label>
-                        <div class="col-sm-10">
-                            参考价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num11" id="num11" class="form-control newWidth" />&nbsp;元;
-                            参考里程:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num12" id="num12" class="form-control newWidth" />&nbsp;公里;<br><br>
-                            保底价:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num13" id="num13" class="form-control newWidth" />&nbsp;元;
-                            超出参考里程优惠系数:&nbsp;<input type="text" oninput="checkIsXiShu1(this)" name="num14" id="num14" class="form-control newWidth" />&nbsp;;<br><br>
-                            低于参考里程优惠系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num15" id="num15" class="form-control newWidth" />&nbsp;;
-                            包车系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num16" id="num16" class="form-control newWidth" />&nbsp;;<br><br>
-                            五座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num17" id="num17" class="form-control newWidth" />&nbsp;;
-                            七座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num18" id="num18" class="form-control newWidth" />&nbsp;;<br><br>
-                        </div>
-                    </div>
-
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label"></label>
-                        <div class="col-sm-10">
-                            <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TLineInfoDlg.addPrice()"/>
-                        </div>
-                    </div>
-
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">已添加价格</label>
-                        <div class="col-sm-6">
-                            <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;">
-                                <table class="table table-striped table-bordered table-hover table-condensed">
-                                    <thead>
-                                    <tr>
-                                        <th style="width: 300px;text-align: center;">添加时间</th>
-                                        <th style="width: 300px;text-align: center;">车型名称</th>
-                                        <th style="width: 300px;text-align: center;">价格设置</th>
-                                        <th style="width: 100px;text-align: center;">操作</th>
-                                    </tr>
-                                    </thead>
-                                    <tbody id="priceValue">
-
-                                    </tbody>
-                                </table>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-
-            <div class="row" style="margin-top: 30px;">
-                <div class="col-sm-4">
                     <h2 style="font-weight: 700;">班次设置</h2>
                 </div>
             </div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_edit.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_edit.html
index f48818a..6c0deba 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_edit.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_edit.html
@@ -212,101 +212,6 @@
 
             <div class="row" style="margin-top: 30px;">
                 <div class="col-sm-4">
-                    <h2 style="font-weight: 700;">价格设置</h2>
-                </div>
-            </div>
-            <div class="row">
-                <div class="col-sm-11">
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">选择车型:</label>
-                        <div class="col-sm-2">
-                            <select class="form-control" id="serverModelId" >
-                                <option value="">选择车型</option>
-                                @for(obj in carmodelList){
-                                <option value="${obj.id}">${obj.name}</option>
-                                @}
-                            </select>
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">选择车型:</label>
-                        <div class="col-sm-2"  style="display: flex;align-items: center;">
-                            <div class="radio radio-info radio-inline">
-                                <input type="radio" id="type1" value="1" name="type" checked="" onclick="TLineInfoDlg.typeClick(1)">
-                                <label for="type1"> 固定计价 </label>
-                            </div>
-                            <div class="radio radio-success radio-inline">
-                                <input type="radio" id="type2" value="2" name="type" onclick="TLineInfoDlg.typeClick(2)">
-                                <label for="type2"> 浮动计价 </label>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="form-group" id="fixedDiv">
-                        <label class="col-sm-2 control-label">固定计价:</label>
-                        <div class="col-sm-10">
-                            单人价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num1" id="num1" class="form-control newWidth" />&nbsp;元;
-                            包车价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num2" id="num2" class="form-control newWidth" />&nbsp;元;<br><br>
-                            五座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num3" id="num3" class="form-control newWidth" />&nbsp;;
-                            七座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num4" id="num4" class="form-control newWidth" />&nbsp;;
-                        </div>
-                    </div>
-
-                    <div class="form-group" id="floatDiv" style="display: none;">
-                        <label class="col-sm-2 control-label">浮动计价:</label>
-                        <div class="col-sm-10">
-                            参考价格:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num11" id="num11" class="form-control newWidth" />&nbsp;元;
-                            参考里程:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num12" id="num12" class="form-control newWidth" />&nbsp;公里;<br><br>
-                            保底价:&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num13" id="num13" class="form-control newWidth" />&nbsp;元;
-                            超出参考里程优惠系数:&nbsp;<input type="text" oninput="checkIsXiShu1(this)" name="num14" id="num14" class="form-control newWidth" />&nbsp;;<br><br>
-                            低于参考里程优惠系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num15" id="num15" class="form-control newWidth" />&nbsp;;
-                            包车系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num16" id="num16" class="form-control newWidth" />&nbsp;;<br><br>
-                            五座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num17" id="num17" class="form-control newWidth" />&nbsp;;
-                            七座系数:&nbsp;<input type="text" oninput="checkIsXiShu(this)" name="num18" id="num18" class="form-control newWidth" />&nbsp;;<br><br>
-                        </div>
-                    </div>
-
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label"></label>
-                        <div class="col-sm-10">
-                            <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TLineInfoDlg.addPrice()"/>
-                        </div>
-                    </div>
-
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">已添加价格</label>
-                        <div class="col-sm-6">
-                            <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;">
-                                <table class="table table-striped table-bordered table-hover table-condensed">
-                                    <thead>
-                                    <tr>
-                                        <th style="width: 300px;text-align: center;">添加时间</th>
-                                        <th style="width: 300px;text-align: center;">车型名称</th>
-                                        <th style="width: 300px;text-align: center;">价格设置</th>
-                                        <th style="width: 100px;text-align: center;">操作</th>
-                                    </tr>
-                                    </thead>
-                                    <tbody id="priceValue">
-                                    @for(obj in linePriceList!){
-                                    <tr class="typeValueClass">
-                                        <td style="text-align: center;"><input type="hidden" id="timeValue" name="timeValue" value="${obj.addTime}">${obj.addTime}</td>
-                                        <td style="text-align: center;"><input type="hidden" id="serverModelIdValue" name="serverModelIdValue" value="${obj.serverCarModelId}">${obj.name}</td>
-                                        <td style="text-align: center;"><input type="hidden" id="typeValue" name="typeValue" value="${obj.type}">
-                                            <input type="hidden" id="contentValue" name="contentValue" value='${obj.content}'>
-                                            <input type="hidden" id="contentStrValue" name="contentStrValue" value="${obj.contentStr}">${obj.contentStr}</td>
-                                        <td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td>
-                                    </tr>
-                                    @}
-                                    </tbody>
-                                </table>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-
-            <div class="row" style="margin-top: 30px;">
-                <div class="col-sm-4">
                     <h2 style="font-weight: 700;">班次设置</h2>
                 </div>
             </div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html
index f6516a2..7caa2fd 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html
@@ -24,7 +24,7 @@
                                     <option value="1">APP下单</option>
                                     <option value="2">扫码下单</option>
                                     <option value="3">小程序下单</option>
-                                    <option value="4">司机下单</option>
+                                    <option value="4">预约订单</option>
                                     <option value="5">调度下单</option>
                                 </#SelectCon>
                             </div>
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js
index aede311..a4d6ca0 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js
@@ -247,6 +247,30 @@
     return $("#carInfoForm").data('bootstrapValidator').isValid();
 };
 
+TCarInfoDlg.validateServiceModel = function (serverBox) {
+    if (serverBox.indexOf("1") > -1 && $("#zcModel").val() == "") {
+        Feng.info("请选择快车车型");
+        return false;
+    }
+    if (serverBox.indexOf("3") > -1 && $("#kcModel").val() == "") {
+        Feng.info("请选择跨城出行车型");
+        return false;
+    }
+    return true;
+};
+
+TCarInfoDlg.hasSubmitError = function (data) {
+    if (typeof data == "string") {
+        Feng.error(data);
+        return true;
+    }
+    if (data && data.code && data.code != 200) {
+        Feng.error(data.msg || data.message || "操作失败");
+        return true;
+    }
+    return false;
+};
+
 /**
  * 清除数据
  */
@@ -364,6 +388,9 @@
         Feng.info("请选择经营业务");
         return;
     }
+    if (!TCarInfoDlg.validateServiceModel(serverBox)){
+        return;
+    }
     var carPhoto = $("#carPhoto").valueOf();
     if ("" == carPhoto){
         Feng.info("请上传车辆照片");
@@ -377,6 +404,9 @@
 
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tCar/add", function(data){
+        if (TCarInfoDlg.hasSubmitError(data)) {
+            return;
+        }
         Feng.success("添加成功!");
         window.parent.TCar.table.refresh();
         TCarInfoDlg.close();
@@ -437,6 +467,9 @@
         Feng.info("请选择经营业务");
         return;
     }
+    if (!TCarInfoDlg.validateServiceModel(serverBox)){
+        return;
+    }
     var carPhoto = $("#carPhoto").valueOf();
     if ("" == carPhoto){
         Feng.info("请上传车辆照片");
@@ -449,6 +482,9 @@
     // }
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tCar/update", function(data){
+        if (TCarInfoDlg.hasSubmitError(data)) {
+            return;
+        }
         if(200 == data.code){
             Feng.success("修改成功!");
             window.parent.TCar.table.refresh();
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/franchisee_info.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/franchisee_info.js
index 1cc9ef6..44ce15f 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/franchisee_info.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/franchisee_info.js
@@ -344,7 +344,7 @@
     var checkbox8 = $('#checkbox8').prop('checked');
     var checkbox9 = $('#checkbox9').prop('checked');
 
-    var isNeedFerry = $("input[name='isNeedFerry']:checked").val();
+    var isNeedFerry = 2;
     var isCanSelectSeat = $("input[name='isCanSelectSeat']:checked").val();
     var isCanModifyAmount = $("#isCanModifyAmount").is(":checked") ? 1 : 2;
     var isOfflinePay = $("#isOfflinePay").is(":checked") ? 1 : 2;
@@ -571,7 +571,7 @@
     var checkbox8 = $('#checkbox8').prop('checked');
     var checkbox9 = $('#checkbox9').prop('checked');
 
-    var isNeedFerry = $("input[name='isNeedFerry']:checked").val();
+    var isNeedFerry = 2;
     var isCanSelectSeat = $("input[name='isCanSelectSeat']:checked").val();
     var isCanModifyAmount = $("#isCanModifyAmount").is(":checked") ? 1 : 2;
     var isOfflinePay = $("#isOfflinePay").is(":checked") ? 1 : 2;
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/tCompany_info.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/tCompany_info.js
index 9d1903a..ecd204c 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/tCompany_info.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tCompany/tCompany_info.js
@@ -351,7 +351,7 @@
         Feng.error("请选择经营区域");
         return;
     }
-    var isNeedFerry = $("input[name='isNeedFerry']:checked").val();
+    var isNeedFerry = 2;
     var isCanSelectSeat = $("input[name='isCanSelectSeat']:checked").val();
     var isCanModifyAmount = $("#isCanModifyAmount").is(":checked") ? 1 : 2;
     var isOfflinePay = $("#isOfflinePay").is(":checked") ? 1 : 2;
@@ -592,7 +592,7 @@
         Feng.error("请选择经营区域");
         return;
     }
-    var isNeedFerry = $("input[name='isNeedFerry']:checked").val();
+    var isNeedFerry = 2;
     var isCanSelectSeat = $("input[name='isCanSelectSeat']:checked").val();
     var isCanModifyAmount = $("#isCanModifyAmount").is(":checked") ? 1 : 2;
     var isOfflinePay = $("#isOfflinePay").is(":checked") ? 1 : 2;
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine.js
index 2d85e00..146960f 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine.js
@@ -34,15 +34,6 @@
                 return btn;
             }
         },
-        {title: '关联车型', field: 'modelStr', visible: true, align: 'center', valign: 'middle',
-            formatter: function (value, row) {
-                var btn = "";
-                if(row.modelStr != '' && row.modelStr != null) {
-                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.modelStr + '" onfocus="TUser.tooltip()">' + row.modelStr+ '</p>']
-                }
-                return btn;
-            }
-        },
         {title: '班次数', field: 'shiftNum', visible: true, align: 'center', valign: 'middle',
             formatter: function (value, row) {
                 var btn = "";
@@ -252,7 +243,6 @@
     queryData['insertTime'] = $("#insertTime").val();
     queryData['name'] = $("#name").val();
     queryData['insertUser'] = $("#insertUser").val();
-    queryData['modelStr'] = $("#modelStr").val();
     queryData['state'] = $("#state").val();
     TLine.table.refresh({query: queryData});
 };
@@ -261,7 +251,6 @@
     $("#insertTime").val("");
     $("#name").val("");
     $("#insertUser").val("");
-    $("#modelStr").val("");
     $("#state").val("");
     TLine.search();
 };
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine_info.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine_info.js
index 5e6827d..8e27d70 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine_info.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tLine/tLine_info.js
@@ -196,20 +196,6 @@
     var startSiteId = $("#startSiteId").val();
     var endSiteId = $("#endSiteId").val();
 
-    var subArr=[];
-    $(".typeValueClass").each(function () {
-        subArr.push({
-            serverModelId:$(this).find("input[name*='serverModelIdValue']").val(),
-            type:$(this).find("input[name*='typeValue']").val(),
-            time:$(this).find("input[name*='timeValue']").val(),
-            content:$(this).find("input[name*='contentValue']").val(),
-            contentStr:$(this).find("input[name*='contentStrValue']").val(),
-        })
-    });
-    if(subArr.length <= 0){
-        Feng.error("请至少设置一条价格设置");
-        return;
-    }
     if(!TLineInfoDlg.validateShiftCarNum()){
         return;
     }
@@ -246,7 +232,7 @@
     ajax.set(this.tLineInfoData);
     ajax.set("startSiteId",startSiteId);
     ajax.set("endSiteId",endSiteId);
-    ajax.set("subArr",JSON.stringify(subArr));
+    ajax.set("subArr","[]");
     ajax.set("shuArr",JSON.stringify(shuArr));
     ajax.set("destArr",JSON.stringify(destArr));
     ajax.start();
@@ -269,20 +255,6 @@
     var startSiteId = $("#startSiteId").val();
     var endSiteId = $("#endSiteId").val();
 
-    var subArr=[];
-    $(".typeValueClass").each(function () {
-        subArr.push({
-            serverModelId:$(this).find("input[name*='serverModelIdValue']").val(),
-            type:$(this).find("input[name*='typeValue']").val(),
-            time:$(this).find("input[name*='timeValue']").val(),
-            content:$(this).find("input[name*='contentValue']").val(),
-            contentStr:$(this).find("input[name*='contentStrValue']").val(),
-        })
-    });
-    if(subArr.length <= 0){
-        Feng.error("请至少设置一条价格设置");
-        return;
-    }
     if(!TLineInfoDlg.validateShiftCarNum()){
         return;
     }
@@ -317,7 +289,7 @@
     ajax.set(this.tLineInfoData);
     ajax.set("startSiteId",startSiteId);
     ajax.set("endSiteId",endSiteId);
-    ajax.set("subArr",JSON.stringify(subArr));
+    ajax.set("subArr","[]");
     ajax.set("shuArr",JSON.stringify(shuArr));
     ajax.set("destArr",JSON.stringify(destArr));
     ajax.start();
@@ -351,116 +323,6 @@
 $(function() {
     Feng.initValidator("lineInfoForm", TLineInfoDlg.validateFields);
 });
-
-/**
- * 计价方式改变时
- * @param e
- */
-TLineInfoDlg.typeClick = function (e) {
-    if (1 == e){
-        $("#fixedDiv").show();
-        $("#floatDiv").hide();
-    } else if (2 == e){
-        $("#floatDiv").show();
-        $("#fixedDiv").hide();
-    }
-}
-
-/**
- * 添加价格
- */
-TLineInfoDlg.addPrice = function () {
-    var serverModelId = $("#serverModelId").val();
-    var serverModelText = $("#serverModelId option:selected").text();
-    if ("" == serverModelId){
-        Feng.info("请选择车型");
-        return;
-    }
-    var type = $("input[name='type']:checked").val();
-    var content = '';
-    var contentStr = "";
-    if (1 == type){
-        var num1 = $("#num1").val();
-        var num2 = $("#num2").val();
-        var num3 = $("#num3").val();
-        var num4 = $("#num4").val();
-        if(null == num1 || '' == num1 || null == num2 || '' == num2 || null == num3 || '' == num3 || null == num4 || '' == num4){
-            Feng.info("固定计价格式不正确!");
-            return;
-        }
-        // if(!regDouble.test(num1) || !regDouble.test(num2) || !regXiShu.test(num3) || !regXiShu.test(num4)){
-        //     Feng.info("固定计价格式不正确!");
-        //     return;
-        // }
-        content = '{"num1":"'+num1+'","num2":"'+num2+'","num3":"'+num3+'","num4":"'+num4+'"}';
-        contentStr = "单人价格:"+num1+";包车价格:"+num2+";五座系数:"+num3+";七座系数:"+num4+";";
-    } else if (2 == type){
-        var num11 = $("#num11").val();
-        var num12 = $("#num12").val();
-        var num13 = $("#num13").val();
-        var num14 = $("#num14").val();
-        var num15 = $("#num15").val();
-        var num16 = $("#num16").val();
-        var num17 = $("#num17").val();
-        var num18 = $("#num18").val();
-        if(null == num11 || '' == num11 || null == num12 || '' == num12 || null == num13 || '' == num13 || null == num14 || '' == num14
-        || null == num15 || '' == num15 || null == num16 || '' == num16 || null == num17 || '' == num17 || null == num18 || '' == num18){
-            Feng.info("浮动计价格式不正确!");
-            return;
-        }
-        // if(!regDouble.test(num11) || !regDouble.test(num12) || !regDouble.test(num13) || !regXiShu1.test(num14) || !regXiShu.test(num15) || !regXiShu.test(num16) || !regXiShu.test(num17) || !regXiShu.test(num18)){
-        //     Feng.info("浮动计价格式不正确!");
-        //     return;
-        // }
-        content = '{"num1":"'+num11+'","num2":"'+num12+'","num3":"'+num13+'","num4":"'+num14+'","num5":"'+num15+'","num6":"'+num16+'","num7":"'+num17+'","num8":"'+num18+'"}';
-        contentStr = "参考价格:"+num11+";参考里程:"+num12+";保底价:"+num13+";超出参考里程优惠系数:"+num14+";低于参考里程优惠系数:"+num15+";包车系数:"+num16+";五座系数:"+num17+";七座系数:"+num18+";";
-    }
-
-    var subArr=[];
-    $(".typeValueClass").each(function () {
-        subArr.push({
-            serverModelId:$(this).find("input[name*='serverModelIdValue']").val(),
-            type:$(this).find("input[name*='typeValue']").val(),
-            time:$(this).find("input[name*='timeValue']").val(),
-            content:$(this).find("input[name*='contentValue']").val(),
-            contentStr:$(this).find("input[name*='contentStrValue']").val(),
-        })
-    });
-    //判断车型是否存在
-    for(var i=0;i<subArr.length;i++){
-        var serverModelIdValue = subArr[i].serverModelId;
-        if (serverModelIdValue == serverModelId) {
-            Feng.info("车型已存在,请重新选择");
-            return;
-        }
-    }
-    //封装数据
-    var str = '<tr class="typeValueClass">' +
-        '<td style="text-align: center;"><input type="hidden" id="timeValue" name="timeValue" value="'+getNowFormatDate()+'">' + getNowFormatDate() + '</td>' +
-        '<td style="text-align: center;"><input type="hidden" id="serverModelIdValue" name="serverModelIdValue" value="'+serverModelId+'">'+serverModelText+'</td>' +
-        '<td style="text-align: center;"><input type="hidden" id="typeValue" name="typeValue" value="'+type+'">' +
-        '   <input type="hidden" id="contentValue" name="contentValue" value='+content+'>' +
-        '   <input type="hidden" id="contentStrValue" name="contentStrValue" value="'+contentStr+'">'+contentStr+'</td>' +
-        '<td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td></tr>';
-    $("#priceValue").append(str);
-    //清除数据
-    $("#serverModelId").val("");
-    if (1 == type){
-        $("#num1").val("");
-        $("#num2").val("");
-        $("#num3").val("");
-        $("#num4").val("");
-    } else if (2 == type){
-        $("#num11").val("");
-        $("#num12").val("");
-        $("#num13").val("");
-        $("#num14").val("");
-        $("#num15").val("");
-        $("#num16").val("");
-        $("#num17").val("");
-        $("#num18").val("");
-    }
-}
 
 /**
  * 添加班次
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js
index 1944319..a3b0a33 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js
@@ -54,7 +54,7 @@
                     } else if (row.orderSource == 3){
                         btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="小程序下单" onfocus="TUser.tooltip()">小程序下单</p>']
                     } else if (row.orderSource == 4){
-                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="司机下单" onfocus="TUser.tooltip()">司机下单</p>']
+                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="预约订单" onfocus="TUser.tooltip()">预约订单</p>']
                     } else if (row.orderSource == 5){
                         btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="调度下单" onfocus="TUser.tooltip()">调度下单</p>']
                     }
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/LineSiteController.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/LineSiteController.java
index f9e81e6..e2dc5ae 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/LineSiteController.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/LineSiteController.java
@@ -30,8 +30,6 @@
     @Autowired
     private ILineSiteService lineSiteService;
 
-
-
     @ResponseBody
     @RequestMapping(value = "/base/lineSite/queryDriver", method = RequestMethod.POST)
     @ApiOperation(value = "根据线路id获取线路排班数据", tags = {"用户端-跨城"}, notes = "")
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml
index efb9820..96517d9 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml
@@ -10,6 +10,7 @@
         <result column="rakeRate" property="rakeRate"/>
         <result column="state" property="state"/>
         <result column="insertTime" property="insertTime"/>
+        <result column="dispatchPhone" property="dispatchPhone"/>
     </resultMap>
 
 
@@ -17,6 +18,7 @@
         select
         a.id as id,
         a.name as name,
+        a.dispatchPhone as dispatchPhone,
         c.name as siteName
         from t_line a
         left join t_line_site b on (a.id = b.lineId)
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
index b9b78e2..4f4dd53 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
@@ -29,7 +29,7 @@
             -- 线路信息
             l.id as lineId,
             l.name as lineName,
-            lp.content as priceContent,
+            null as priceContent,
             DATE_FORMAT(lsd.day, '%Y-%m-%d') as day,
             ls.startTime as startTime,
             ls.endTime as endTime,
@@ -65,7 +65,6 @@
         LEFT JOIN t_car_brand cb ON c.carBrandId = cb.id
         LEFT JOIN t_car_model cm ON c.carModelId = cm.id
         LEFT JOIN t_car_service cs ON c.id = cs.carId AND cs.type = 3
-        LEFT JOIN t_line_price lp ON l.id = lp.lineId AND cs.serverCarModelId = lp.serverCarModelId AND lp.state = 1
         WHERE lsd.id = #{lineShiftDriverId}
     </select>
 
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
index 4e92a50..135a3cd 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
@@ -27,8 +27,10 @@
         d.carColor as carColor,
         CONCAT((b.totalSeat - b.laveSeat), '/', b.totalSeat) as `number`,
         (select sum(fraction)/count(fraction) from t_order_evaluate where driverId = b.driverId) as evaluate,
-        h.type as priceType,
-        h.content as content,
+        null as priceType,
+        null as content,
+        (select price5 from t_line_destination where lineId = a.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice5,
+        (select price7 from t_line_destination where lineId = a.lineId and state != 3 order by isMain desc, id asc limit 1) as defaultPrice7,
         b.driverId as driverId,
         c.carId as carId,
         b.totalSeat as totalSeat,
@@ -42,7 +44,6 @@
         left join t_car_brand e on (d.carBrandId = e.id)
         left join t_car_model f on (d.carModelId = f.id)
         left join t_car_service g on (d.id = g.carId and g.`type` = 3)
-        left join t_line_price h on (g.serverCarModelId = h.serverCarModelId and a.lineId = h.lineId)
         where b.driverId in (select driverId from t_driver_work where state = 1 and type like '%3%')
         <if test="null != lineId">
             and a.lineId = #{lineId}
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
index ce19ce4..6f52cd6 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
@@ -328,7 +328,7 @@
 		a.redPacketMoney as redPacketMoney,
 		a.couponMoney as couponMoney,
 		a.discountMoney as discountMoney,
-		a.payMoney as payMoney,
+		IFNULL(a.payMoney, a.orderMoney) as payMoney,
         a.remark as remark,
 		b.headImgUrl as driverAvatar,
 		b.`name` as driverName,
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
index 2a713cc..848d83c 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
@@ -45,6 +45,8 @@
     private Date insertTime;
     @TableField("outSetting")
     private String outSetting;
+    @TableField("dispatchPhone")
+    private String dispatchPhone;
 
     public Integer getId() {
         return id;
@@ -102,6 +104,14 @@
         this.outSetting = outSetting;
     }
 
+    public String getDispatchPhone() {
+        return dispatchPhone;
+    }
+
+    public void setDispatchPhone(String dispatchPhone) {
+        this.dispatchPhone = dispatchPhone;
+    }
+
     @Override
     public String toString() {
         return "Line{" +
@@ -111,6 +121,7 @@
                 ", rakeRate=" + rakeRate +
                 ", state=" + state +
                 ", insertTime=" + insertTime +
+                ", dispatchPhone='" + dispatchPhone + '\'' +
                 '}';
     }
 }
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
index acd8a8e..4ff4c90 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -1,7 +1,6 @@
 package com.stylefeng.guns.modular.crossCity.server.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.stylefeng.guns.core.util.ToolUtil;
@@ -24,6 +23,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -80,6 +80,7 @@
 
         if (lineId != null && lineId < 0) {
             List<Map<String, Object>> result = lineSiteMapper.queryDriverBySelfTripId(Math.abs(lineId), sdf.parse(day), driverId);
+            filterAllOrdersFinishedShift(result);
             for (Map<String, Object> map : result) {
                 map.put("chooseSeat", chooseSeat);
             }
@@ -131,14 +132,17 @@
                 if(driverId1.size() > 0){
                     continue;
                 }
-                if(Integer.valueOf(map.get("laveSeat").toString()) <= 0){
-                    continue;
-                }
                 if(lineShift.getId().intValue() == Integer.valueOf(map.get("id").toString()).intValue()){
+                    if (isAllOrdersFinishedShift(map.get("lineShiftDriverId"))) {
+                        b = false;
+                        continue;
+                    }
+                    if(Integer.valueOf(map.get("laveSeat").toString()) <= 0){
+                        continue;
+                    }
                     b = false;
-                    String content = map.get("content").toString();
-                    JSONObject jsonObject = JSON.parseObject(content);
-                    map.put("price", jsonObject.getString("num1"));
+                    BigDecimal price = getDefaultDestinationPrice(map);
+                    map.put("price", price == null ? "0" : price.toPlainString());
                     if (chooseSeat){
                         map.put("chooseSeat", chooseSeat);
                     }else if (driverId == null){
@@ -159,6 +163,56 @@
         return list;
     }
 
+    private BigDecimal getDefaultDestinationPrice(Map<String, Object> map) {
+        if (map == null) {
+            return null;
+        }
+        Integer totalSeat = map.get("totalSeat") == null ? null : Integer.valueOf(map.get("totalSeat").toString());
+        BigDecimal price = totalSeat != null && totalSeat == 6 ? getBigDecimal(map.get("defaultPrice7")) : getBigDecimal(map.get("defaultPrice5"));
+        return price == null ? getBigDecimal(map.get("defaultPrice5")) : price;
+    }
+
+    private BigDecimal getBigDecimal(Object value) {
+        if (value == null || ToolUtil.isEmpty(String.valueOf(value))) {
+            return null;
+        }
+        try {
+            return new BigDecimal(String.valueOf(value));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    private void filterAllOrdersFinishedShift(List<Map<String, Object>> result) {
+        if (result == null || result.size() == 0) {
+            return;
+        }
+        Iterator<Map<String, Object>> iterator = result.iterator();
+        while (iterator.hasNext()) {
+            Map<String, Object> map = iterator.next();
+            if (isAllOrdersFinishedShift(map.get("lineShiftDriverId"))) {
+                iterator.remove();
+            }
+        }
+    }
+
+    private boolean isAllOrdersFinishedShift(Object lineShiftDriverId) {
+        if (lineShiftDriverId == null) {
+            return false;
+        }
+        int orderCount = orderCrossCityService.selectCount(new EntityWrapper<OrderCrossCity>()
+                .eq("lineShiftDriverId", lineShiftDriverId)
+                .eq("isDelete", 1)
+                .ne("state", 10));
+        if (orderCount <= 0) {
+            return false;
+        }
+        int finishCount = orderCrossCityService.selectCount(new EntityWrapper<OrderCrossCity>()
+                .eq("lineShiftDriverId", lineShiftDriverId)
+                .eq("isDelete", 1)
+                .in("state", Arrays.asList(6, 8, 9)));
+        return orderCount == finishCount;
+    }
 
     /**
      * 根据司机排班数据id获取数据(剩余座位号和总座位数)
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 5e4f752..8b07126 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -65,9 +65,6 @@
 	private OrderCrossCityMapper orderCrossCityMapper;
 	
 	@Resource
-	private LinePriceMapper linePriceMapper;
-
-	@Resource
 	private LineMapper lineMapper;
 	
 	@Resource
@@ -254,7 +251,7 @@
 		if (lineId < 0 && (lineDestinationId == null || lineDestinationId < 0)) {
 			lineShifDriverId = lineShiftDriverMapper.selectLineShiftDriverIdByCustomerId(-lineId);
 		}
-		ResultUtil<Map<String, Object>> result = this.getPriceV2(lineId, lineDestinationId, totalSeat, peopleNumber, endLon, endLat, lineShifDriverId);
+		ResultUtil<Map<String, Object>> result = this.getPriceV2(lineId, lineDestinationId, totalSeat, peopleNumber, endLon, endLat, lineShifDriverId, travelMode);
 		if (result.getCode() != 200) {
 			return result;
 		}
@@ -1274,13 +1271,23 @@
 		 * 鍏堝垽鏂徃鏈哄骇浣嶆暟鏄惁绗﹀悎鍑鸿浜烘暟
 		 */
 		LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCityWarpper.getLineShiftDriverId());
+		if (lineShiftDriver == null) {
+			return ResultUtil.error("班次信息不存在");
+		}
 		if (orderCrossCityWarpper.getTravelMode() == 1) {//拼车判断座位数
 			if (lineShiftDriver.getLaveSeat() < orderCrossCityWarpper.getPeopleNumber()) {
 				return ResultUtil.error("司机剩余座位数小于出行人数");
 			}
 		} else {
+			List<OrderCrossCity> charterOrders = this.selectList(new EntityWrapper<OrderCrossCity>()
+					.eq("lineShiftDriverId", orderCrossCityWarpper.getLineShiftDriverId())
+					.eq("isDelete", 1)
+					.ne("state", 10));
+			if (charterOrders.size() > 0) {
+				return ResultUtil.error("已有其他人下单无法包车");
+			}
 			if (lineShiftDriver.getLaveSeat() != lineShiftDriver.getTotalSeat()) {
-				return ResultUtil.error("司机车辆上已经有人占座,不能下包车订单");
+				return ResultUtil.error("已有其他人下单无法包车");
 			}
 			if (lineShiftDriver.getLaveSeat() == 0) {
 				return ResultUtil.error("司机车辆没有剩余空位了");
@@ -1324,9 +1331,11 @@
 		if (orderCrossCityWarpper.getLineId() < 0 && (lineDestinationId == null || lineDestinationId < 0)) {
 			lineShifDriverId = lineShiftDriverMapper.selectLineShiftDriverIdByCustomerId(-orderCrossCityWarpper.getLineId());
 		}
+		Integer orderPeopleNumber = orderCrossCityWarpper.getTravelMode() == 2 ? lineShiftDriver.getLaveSeat() : orderCrossCityWarpper.getPeopleNumber();
+		Integer priceTotalSeat = orderCrossCityWarpper.getTravelMode() == 2 ? lineShiftDriver.getTotalSeat() : orderCrossCityWarpper.getTotalSeat();
 		ResultUtil<Map<String, Object>> price = this.getPriceV2(orderCrossCityWarpper.getLineId(), orderCrossCityWarpper.getLineDestinationId(),
-				orderCrossCityWarpper.getTotalSeat(), orderCrossCityWarpper.getPeopleNumber(), orderCrossCityWarpper.getEndLon(),
-				orderCrossCityWarpper.getEndLat(), lineShifDriverId);
+				priceTotalSeat, orderPeopleNumber, orderCrossCityWarpper.getEndLon(),
+				orderCrossCityWarpper.getEndLat(), lineShifDriverId, orderCrossCityWarpper.getTravelMode());
 		if (price.getCode() != 200) {
 			return ResultUtil.error("计算价格失败");
 		}
@@ -1341,7 +1350,7 @@
 		UserInfo userInfo = userInfoService.selectById(uid);
 		orderCrossCity.setPassengers(userInfo.getNickName());
 		orderCrossCity.setPassengersPhone(userInfo.getPhone());
-		orderCrossCity.setPeopleNumber(orderCrossCityWarpper.getPeopleNumber());
+		orderCrossCity.setPeopleNumber(orderPeopleNumber);
 		List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderCrossCity.getOrderNum()).eq("isDelete", 1));
 		orderCrossCity.setSort(orderCrossCities.size() + 1);
 		orderCrossCity.setState(7);//待支付
@@ -1758,98 +1767,10 @@
 		}
 		
 		Map<String, Object> map = new HashMap<>();
-		double distance1 = distance.doubleValue() / 1000;//鍏噷
 		map.put("distance", distance);
-		
-		/**
-		 * 1.固定价格的包车是整车价格
-		 * 2.五座车和七座车的优惠系数是中间特殊位置的优惠折扣
-		 * 3.包车的情况不享受中间特殊位置的优惠折扣
-		 * 4.浮动计费拼车如果选中中间特殊位置时享受优惠系数又享受中间特殊位置的优惠折扣
-		 */
-		Map<String, Object> query = linePriceMapper.query(lineId, serverCarModelId);
-		if (null == query) {
-			map.put("distance", 0);
-			map.put("price", 0);
-			return ResultUtil.success(map);
-		}
-		String content = query.get("content").toString();
-		JSONObject jsonObject = JSON.parseObject(content);
-		if (Integer.valueOf(query.get("type").toString()) == 1) {//固定金额
-			double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();
-			double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();
-			double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();
-			double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();
-			if (travelMode == 1) {//拼车
-				String[] split = seatNumber.split(",");
-				boolean b = false;
-				for (String s : split) {
-					if ((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))) {
-						b = true;
-						break;
-					}
-				}
-				double price1 = 0D;
-				if (b) {
-					price1 = num1 * (totalSeat == 4 ? num3 : num4);
-					peopleNumber -= 1;
-				}
-				double price = (num1 * peopleNumber) + price1;
-				map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-			} else {
-				map.put("price", num2);//包车价
-			}
-			
-		} else {//浮动计费
-			//计算公式:实际里程 * 基础单价 * (参考费用 / (参考里程 * 基础单价)) + (实际里程 - 参考里程) * 基础单价 * 优惠系数
-			double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考价格
-			double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();//参考里程
-			double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();//保底价
-			double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();//超出参考里程优惠系数
-			double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//低于参考里程优惠系数
-			double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//包车系数
-			double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//五座系数
-			double num8 = Double.valueOf(jsonObject.getString("num8")).doubleValue();//七座系数
-			
-			
-			/**
-			 * 1、实际里程 > 参考里程
-			 *    参考价 + ((实际里程 - 参考里程)*(参考价 / 参考里程)*超出参考里程优惠系数)
-			 *
-			 * 2、实际里程 < 参考里程
-			 *    参考价 - ((参考里程 - 实际里程)*(参考价 / 参考里程)*低于参考里程优惠系数)
-			 */
-			double unitPrice = 0d;
-			if (distance1 > num2) {//1
-				unitPrice = num1 + ((distance1 - num2) * (num1 / num2) * num4);
-			}
-			if (distance1 < num2) {//2
-				unitPrice = num1 - ((num2 - distance1) * (num1 / num2) * num5);
-			}
-			if (distance1 == num2) {
-				unitPrice = num1;
-			}
-			if (travelMode == 1) {//拼车
-				String[] split = seatNumber.split(",");
-				boolean b = false;
-				for (String s : split) {
-					if ((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))) {
-						b = true;
-						break;
-					}
-				}
-				double price1 = 0D;
-				if (b) {
-					price1 = unitPrice * (totalSeat == 4 ? num7 : num8);
-					peopleNumber -= 1;
-				}
-				double price = (unitPrice * peopleNumber) + price1;
-				map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-			} else {
-				double price = unitPrice * totalSeat * num6;
-				map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-			}
-		}
+		Integer pricePeopleNumber = travelMode != null && travelMode == 2 && totalSeat != null && totalSeat > 0 ? totalSeat : peopleNumber;
+		BigDecimal unitPrice = queryDefaultLineDestinationPrice(lineId, totalSeat);
+		map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, pricePeopleNumber).doubleValue());
 		return ResultUtil.success(map);
 	}
 	
@@ -2876,6 +2797,7 @@
 			unPayOrderVO.setDriverInfoWarpper(driverInfoWarpper);
 			//其他信息
 			BeanUtils.copyProperties(orderCrossCity, unPayOrderVO);
+			unPayOrderVO.setPayMoney(orderCrossCity.getPayMoney() == null ? orderCrossCity.getOrderMoney() : orderCrossCity.getPayMoney());
 			unPayOrderVOList.add(unPayOrderVO);
 		}
 		return unPayOrderVOList;
@@ -2982,15 +2904,7 @@
 		result.setLaveSeat(data.get("laveSeat") != null ? Integer.parseInt(data.get("laveSeat").toString()) : null);
 		result.setLaveSeatNumber(data.get("laveSeatNumber") != null ? data.get("laveSeatNumber").toString() : null);
 
-		// 3. 解析价格JSON获取单人价格
-		String priceContent = data.get("priceContent") != null ? data.get("priceContent").toString() : null;
-		if (priceContent != null && !priceContent.isEmpty()) {
-			JSONObject json = JSON.parseObject(priceContent);
-			String num1 = json.getString("num1");
-			if (num1 != null && !num1.isEmpty()) {
-				result.setUnitPrice(Double.parseDouble(num1));
-			}
-		}
+		result.setUnitPrice(queryDefaultLineDestinationPriceDouble(result.getLineId(), result.getTotalSeat()));
 
 		// 站点信息
 		result.setStartSiteId(data.get("startSiteId") != null ? Integer.parseInt(data.get("startSiteId").toString()) : null);
@@ -3330,26 +3244,24 @@
 	}
 
 	public ResultUtil<Map<String, Object>> getPriceV2(Integer lineId, Integer lineDestinationId, Integer totalSeat,
-	                                                  Integer peopleNumber, Double endLon, Double endLat, Integer lineShiftDriverId) {
+	                                                  Integer peopleNumber, Double endLon, Double endLat, Integer lineShiftDriverId, Integer travelMode) {
 		Map<String, Object> map = new HashMap<>();
 		map.put("distance", 0);
 		if (peopleNumber == null || peopleNumber <= 0 || endLon == null || endLat == null) {
 			map.put("price", -1);
 			return ResultUtil.success(map);
 		}
+		Integer pricePeopleNumber = travelMode != null && travelMode == 2 && totalSeat != null && totalSeat > 0 ? totalSeat : peopleNumber;
 		if (lineDestinationId != null && lineDestinationId > 0) {
 			Map<String, Object> destination = lineMapper.queryLineDestinationById(lineDestinationId, lineId);
 			BigDecimal unitPrice = null;
 			if (destination != null) {
-				unitPrice = totalSeat != null && totalSeat == 6 ? getBigDecimal(destination.get("price7")) : getBigDecimal(destination.get("price5"));
-				if (unitPrice == null) {
-					unitPrice = getBigDecimal(destination.get("price5"));
-				}
+				unitPrice = getDestinationPrice(destination, totalSeat);
 			}
-			map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, peopleNumber).doubleValue());
+			map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, pricePeopleNumber).doubleValue());
 			return ResultUtil.success(map);
 		}
-		if (lineId != null && lineId < -1) {
+		if (lineId != null && lineId <= -1) {
 			if (lineShiftDriverId == null) {
 				map.put("price", -1);
 				return ResultUtil.success(map);
@@ -3362,7 +3274,7 @@
 			OrderCrossCityScanWarpper warpper = new OrderCrossCityScanWarpper();
 			warpper.setEndLon(endLon);
 			warpper.setEndLat(endLat);
-			warpper.setPeopleNumber(peopleNumber);
+			warpper.setPeopleNumber(pricePeopleNumber);
 			return getPriceV2(lineId, lineShiftDriver, warpper);
 		}
 		List<Map<String, Object>> destinations = lineMapper.queryLineDestinations(lineId);
@@ -3370,19 +3282,16 @@
 			map.put("price", -1);
 			return ResultUtil.success(map);
 		}
-		BigDecimal defaultPrice5 = getBigDecimal(destinations.get(0).get("price5"));
+		BigDecimal defaultPrice = getDestinationPrice(destinations.get(0), totalSeat);
 		BigDecimal matchedPrice = null;
 		for (Map<String, Object> destination : destinations) {
 			if (isPointInDestinationFence(destination, endLon, endLat)) {
-				matchedPrice = totalSeat != null && totalSeat == 6 ? getBigDecimal(destination.get("price7")) : getBigDecimal(destination.get("price5"));
-				if (matchedPrice == null) {
-					matchedPrice = getBigDecimal(destination.get("price5"));
-				}
+				matchedPrice = getDestinationPrice(destination, totalSeat);
 				break;
 			}
 		}
-		BigDecimal finalPrice = matchedPrice == null ? defaultPrice5 : matchedPrice;
-		map.put("price", finalPrice == null ? -1 : multiplyPeopleNumber(finalPrice, peopleNumber).doubleValue());
+		BigDecimal finalPrice = matchedPrice == null ? defaultPrice : matchedPrice;
+		map.put("price", finalPrice == null ? -1 : multiplyPeopleNumber(finalPrice, pricePeopleNumber).doubleValue());
 		return ResultUtil.success(map);
 	}
 
@@ -3425,18 +3334,14 @@
 		if (destinations == null || destinations.size() == 0) {
 			return null;
 		}
-		BigDecimal defaultPrice5 = getBigDecimal(destinations.get(0).get("price5"));
+		BigDecimal defaultPrice = getDestinationPrice(destinations.get(0), lineShiftDriver.getTotalSeat());
 		for (Map<String, Object> destination : destinations) {
 			if (isPointInDestinationFence(destination, warpper.getEndLon(), warpper.getEndLat())) {
-				if (lineShiftDriver.getTotalSeat() != null && lineShiftDriver.getTotalSeat() == 6) {
-					BigDecimal price7 = getBigDecimal(destination.get("price7"));
-					return price7 == null ? defaultPrice5 : price7;
-				}
-				BigDecimal price5 = getBigDecimal(destination.get("price5"));
-				return price5 == null ? defaultPrice5 : price5;
+				BigDecimal price = getDestinationPrice(destination, lineShiftDriver.getTotalSeat());
+				return price == null ? defaultPrice : price;
 			}
 		}
-		return defaultPrice5;
+		return defaultPrice;
 	}
 
 	private boolean isPointInDestinationFence(Map<String, Object> destination, Double lon, Double lat) {
@@ -3501,6 +3406,29 @@
 		}
 	}
 
+	private BigDecimal queryDefaultLineDestinationPrice(Integer lineId, Integer totalSeat) {
+		List<Map<String, Object>> destinations = lineMapper.queryLineDestinations(lineId);
+		if (destinations == null || destinations.size() == 0) {
+			return null;
+		}
+		return getDestinationPrice(destinations.get(0), totalSeat);
+	}
+
+	private Double queryDefaultLineDestinationPriceDouble(Integer lineId, Integer totalSeat) {
+		BigDecimal price = queryDefaultLineDestinationPrice(lineId, totalSeat);
+		return price == null ? 0.0D : price.doubleValue();
+	}
+
+	private BigDecimal getDestinationPrice(Map<String, Object> destination, Integer totalSeat) {
+		if (destination == null) {
+			return null;
+		}
+		BigDecimal price = totalSeat != null && totalSeat == 6
+				? getBigDecimal(destination.get("price7"))
+				: getBigDecimal(destination.get("price5"));
+		return price == null ? getBigDecimal(destination.get("price5")) : price;
+	}
+
 	private BigDecimal multiplyPeopleNumber(BigDecimal price, Integer peopleNumber) {
 		if (price == null || peopleNumber == null || peopleNumber <= 0) {
 			return null;
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineWarpper.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineWarpper.java
index cac8d95..586addf 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineWarpper.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineWarpper.java
@@ -17,6 +17,8 @@
     private String startAddress;
     @ApiModelProperty("终点")
     private String endAddress;
+    @ApiModelProperty("调度电话")
+    private String dispatchPhone;
 
     public Integer getId() {
         return id;
@@ -50,6 +52,14 @@
         this.endAddress = endAddress;
     }
 
+    public String getDispatchPhone() {
+        return dispatchPhone;
+    }
+
+    public void setDispatchPhone(String dispatchPhone) {
+        this.dispatchPhone = dispatchPhone;
+    }
+
     @Override
     public String toString() {
         return "LineWarpper{" +
@@ -57,6 +67,7 @@
                 ", name='" + name + '\'' +
                 ", startAddress='" + startAddress + '\'' +
                 ", endAddress='" + endAddress + '\'' +
+                ", dispatchPhone='" + dispatchPhone + '\'' +
                 '}';
     }
 
@@ -68,6 +79,7 @@
             lineWarpper.setName(null != map.get("name") ? map.get("name").toString() : "");
             lineWarpper.setStartAddress(null != map.get("startAddress") ? map.get("startAddress").toString() : "");
             lineWarpper.setEndAddress(null != map.get("endAddress") ? map.get("endAddress").toString() : "");
+            lineWarpper.setDispatchPhone(null != map.get("dispatchPhone") ? map.get("dispatchPhone").toString() : "");
         }
         return lineWarpper;
     }

--
Gitblit v1.7.1