DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java
@@ -64,4 +64,10 @@ List<Map<String, Object>> queryOtherDriverShiftListWithShiftId(@Param("driverShiftId") Long driverShiftId); Integer queryCustomerIdByLineShiftDriverId(@Param("lineShiftDriverId") Integer lineShiftDriverId); /** * 查询已超时且无有效订单的排班ID * 标准班次按收车时间判定;自主行程按出发时间判定 */ List<Integer> queryExpiredNoOrderShiftIds(); } DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
@@ -178,6 +178,13 @@ ) occ ON occ.lineShiftDriverId = lsd.id WHERE lsd.driverId = #{driverId} AND lsd.lineShiftId != -1 AND NOT EXISTS ( SELECT 1 FROM t_order_cross_city occ_end WHERE occ_end.lineShiftDriverId = lsd.id AND occ_end.isDelete = 1 AND occ_end.state = 9 ) <if test="startDate != null and startDate != ''"> AND lsd.day = #{startDate} </if> @@ -207,6 +214,13 @@ AND st.state = 1 WHERE lsd.driverId = #{driverId} AND lsd.lineShiftId = -1 AND NOT EXISTS ( SELECT 1 FROM t_order_cross_city occ_end WHERE occ_end.lineShiftDriverId = lsd.id AND occ_end.isDelete = 1 AND occ_end.state = 9 ) <if test="startDate != null and startDate != ''"> AND lsd.day = #{startDate} </if> @@ -256,4 +270,30 @@ AND ls.state = 1 ORDER BY ls.startTime ASC, other.id ASC </select> <select id="queryExpiredNoOrderShiftIds" resultType="java.lang.Integer"> SELECT lsd.id FROM t_line_shift_driver lsd LEFT JOIN t_line_shift ls ON ls.id = lsd.lineShiftId LEFT JOIN t_driver_self_trip st ON st.id = lsd.customerId WHERE lsd.day IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_order_cross_city occ WHERE occ.lineShiftDriverId = lsd.id AND occ.isDelete = 1 AND occ.state != 10 ) AND ( (lsd.lineShiftId != -1 AND ls.id IS NOT NULL AND ls.state = 1 AND STR_TO_DATE(CONCAT(DATE_FORMAT(lsd.day, '%Y-%m-%d'), ' ', ls.endTime), '%Y-%m-%d %H:%i') < NOW()) OR (lsd.lineShiftId = -1 AND st.id IS NOT NULL AND st.state = 1 AND STR_TO_DATE(CONCAT(DATE_FORMAT(lsd.day, '%Y-%m-%d'), ' ', st.startTime), '%Y-%m-%d %H:%i') < NOW()) ) </select> </mapper> DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/ILineShiftDriverService.java
@@ -69,4 +69,11 @@ * @throws Exception */ ResultUtil<ScanOrderDetailWarpper> getDetail(Integer lineShiftDriverId); /** * 自动取消已超时且无订单的司机排班 * @return 取消数量 * @throws Exception */ Integer autoCancelExpiredNoOrderShifts() throws Exception; } DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
@@ -804,4 +804,36 @@ } return ResultUtil.success(result); } @Override @Transactional(rollbackFor = Exception.class) public Integer autoCancelExpiredNoOrderShifts() throws Exception { List<Integer> shiftIds = lineShiftDriverMapper.queryExpiredNoOrderShiftIds(); if (shiftIds == null || shiftIds.isEmpty()) { return 0; } int cancelCount = 0; for (Integer shiftId : shiftIds) { if (shiftId == null) { continue; } LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(shiftId); if (lineShiftDriver == null) { continue; } if (lineShiftDriver.getLineShiftId() != null && lineShiftDriver.getLineShiftId() == -1 && lineShiftDriver.getCustomerId() != null) { DriverSelfTrip trip = driverSelfTripMapper.selectById(lineShiftDriver.getCustomerId()); if (trip != null && trip.getState() != null && trip.getState() == 1) { trip.setState(2); trip.setUpdateTime(new Date()); driverSelfTripMapper.updateById(trip); } } lineShiftDriverMapper.deleteById(shiftId); cancelCount++; } return cancelCount; } } DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -1,6 +1,7 @@ package com.stylefeng.guns.modular.system.util; import com.stylefeng.guns.modular.account.service.UserWithdrawalService; import com.stylefeng.guns.modular.crossCity.server.ILineShiftDriverService; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IOrderService; import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService; @@ -38,6 +39,9 @@ @Autowired private UserWithdrawalService userWithdrawalService; @Autowired private ILineShiftDriverService lineShiftDriverService; public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id private String ip = null; @@ -63,6 +67,8 @@ orderService.taskMidAxbUnBindSend(); //修改过期的商家券 userMerchantCouponService.updateExpired(); //自动取消已超时且无订单的司机排班 lineShiftDriverService.autoCancelExpiredNoOrderShifts(); } catch (Exception e) { e.printStackTrace(); } ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/set.html
@@ -677,8 +677,8 @@ function checkPercent(percent) { var regex = /^\d+(\.\d{1,2})?$/; if (!regex.test(percent) || percent <= 0 || percent>100) { Feng.error("提成比例必须为正数且支持两位小数"); if (!regex.test(percent) || percent < 0 || percent>100) { Feng.error("提成比例必须大于等于0且支持两位小数"); return false; } return true; ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/set1.html
@@ -647,8 +647,8 @@ function checkPercent(percent) { var regex = /^\d+(\.\d{1,2})?$/; if (!regex.test(percent) || percent <= 0 || percent>100) { Feng.error("提成比例必须为正数且支持两位小数"); if (!regex.test(percent) || percent < 0 || percent>100) { Feng.error("提成比例必须大于等于0且支持两位小数"); return false; } return true;