longz
2026-06-30 80fd77e1bcb47726e440b8a728838189cd39a56a
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
@@ -310,6 +310,78 @@
        ORDER BY ls.startTime ASC, other.id ASC
    </select>
    <select id="queryAvailableCompanyDriversForShift" resultType="java.util.Map">
        SELECT
            0 - d.id as lineShiftDriverId,
            d.id as driverId,
            d.headImgUrl as headImgUrl,
            d.name as driverName,
            c.carLicensePlate as carLicensePlate,
            CONCAT(IFNULL(cb.name, ''), IFNULL(cm.name, '')) as carModel,
            IFNULL(c.carColor, '') as carColor,
            (IFNULL(cm.seat, 1) - 1) as laveSeat,
            (IFNULL(cm.seat, 1) - 1) as totalSeat,
            IFNULL((
                SELECT ROUND(AVG(oe.fraction), 2)
                FROM t_order_evaluate oe
                WHERE oe.driverId = d.id
            ), 0) as score,
            ls.startTime as startTime,
            2 as needConfirm
        FROM t_line_shift_driver cur
        INNER JOIN t_line_shift ls ON cur.lineShiftId = ls.id
        INNER JOIN t_order_cross_city occ ON occ.id = #{orderId}
        INNER JOIN t_driver currentDriver ON cur.driverId = currentDriver.id
        INNER JOIN t_driver d
            ON d.id != cur.driverId
            AND d.state = 2
            AND (
                (IFNULL(currentDriver.franchiseeId, 0) > 0 AND d.franchiseeId = currentDriver.franchiseeId)
                OR (IFNULL(currentDriver.franchiseeId, 0) = 0 AND d.companyId = currentDriver.companyId)
            )
        INNER JOIN t_car c ON d.carId = c.id
        LEFT JOIN t_car_brand cb ON c.carBrandId = cb.id
        LEFT JOIN t_car_model cm ON c.carModelId = cm.id
        WHERE cur.id = #{driverShiftId}
          AND cur.lineShiftId != -1
          AND ls.state = 1
          AND (IFNULL(cm.seat, 1) - 1) >= IFNULL(occ.peopleNumber, 1)
          AND NOT EXISTS (
              SELECT 1
              FROM t_line_shift_driver lsd2
              INNER JOIN t_line_shift ls2 ON lsd2.lineShiftId = ls2.id
              WHERE lsd2.driverId = d.id
                AND lsd2.lineShiftId != -1
                AND DATE(lsd2.day) = DATE(cur.day)
                AND lsd2.id != cur.id
                AND ls2.startTime &lt; ls.endTime
                AND ls2.endTime &gt; ls.startTime
          )
          AND NOT EXISTS (
              SELECT 1
              FROM t_order_cross_city occ2
              WHERE occ2.driverId = d.id
                AND occ2.isDelete = 1
                AND occ2.state IN (2, 3, 4, 5, 11)
                AND DATE(occ2.travelTime) = DATE(cur.day)
          )
          AND NOT EXISTS (
              SELECT 1
              FROM t_order_taxi ot
              WHERE ot.driverId = d.id
                AND ot.state IN (2, 3, 4, 5, 11)
                AND DATE(ot.travelTime) = DATE(cur.day)
          )
          AND NOT EXISTS (
              SELECT 1
              FROM t_order_private_car opc
              WHERE opc.driverId = d.id
                AND opc.state IN (2, 3, 4, 5, 11)
                AND DATE(opc.travelTime) = DATE(cur.day)
          )
        ORDER BY d.id ASC
    </select>
    <select id="queryExpiredNoOrderShiftIds" resultType="java.lang.Integer">
        SELECT lsd.id
        FROM t_line_shift_driver lsd