提交 835ffa7b authored 作者: aiqingguo's avatar aiqingguo

接单限制

上级 9568b75c
......@@ -50,6 +50,7 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_CHILD_TRUCK_MODEL_ERROR(1323, "请选择合适的车型"),
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR(1324, "请选择定向车辆"),
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1(1325, "请选择非定向车辆"),
ORDER_CHILD_DRIVER_TAKE_ORDER_TIME_LIMIT(1326, "你已因违约行为被限制接单,限制时间至"),
ORDER_CHILD_LOAD_TIME_ERROR(1341, "非装车时间段"),
ORDER_CHILD_UNLOAD_TIME_ERROR(1342, "非卸车时间段"),
......
......@@ -8,6 +8,7 @@ import com.clx.performance.param.app.breakcontract.DriverPageBreakContractDriver
import com.clx.performance.param.pc.breakcontract.carrier.PageBreakContractDriverRecordParam;
import com.clx.performance.vo.app.breakcontract.DriverBreakContractDriverRecordVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractDriverRecordVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
/**
......@@ -17,6 +18,8 @@ import com.msl.common.dao.BaseDao;
*/
public interface BreakContractDriverRecordDao extends BaseDao<BreakContractDriverRecordMapper, BreakContractDriverRecord, Integer> {
Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo);
IPage<BreakContractDriverRecordVO> pageByParam(PageBreakContractDriverRecordParam param);
IPage<DriverBreakContractDriverRecordVO> driverPageByParam(DriverPageBreakContractDriverRecordParam param);
......
......@@ -10,6 +10,7 @@ import com.clx.performance.param.app.breakcontract.DriverPageBreakContractDriver
import com.clx.performance.param.pc.breakcontract.carrier.PageBreakContractDriverRecordParam;
import com.clx.performance.vo.app.breakcontract.DriverBreakContractDriverRecordVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractDriverRecordVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
......@@ -20,6 +21,17 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class BreakContractDriverRecordDaoImpl extends BaseDaoImpl<BreakContractDriverRecordMapper, BreakContractDriverRecord, Integer> implements BreakContractDriverRecordDao {
@Override
public Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo) {
return Optional.of(driverUserNo)
.map(item -> lQrWrapper()
.eq(BreakContractDriverRecord::getDriverUserNo, item)
.orderByDesc(BreakContractDriverRecord::getLimitTime)
.last("limit 1")
)
.map(super::getOne);
}
@Override
public IPage<BreakContractDriverRecordVO> pageByParam(PageBreakContractDriverRecordParam param) {
Page<BreakContractDriverRecordVO> page = Page.of(param.getPage(), param.getPageSize());
......
......@@ -10,6 +10,8 @@ import com.clx.performance.constant.RedisConstants;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*;
import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.breakcontract.BreakContractOwnerRuleDao;
import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
......@@ -18,6 +20,7 @@ import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.*;
import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
......@@ -94,6 +97,7 @@ public class OrderChildServiceImpl implements OrderChildService {
private final IntegralMqService integralMqService;
private final GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent;
private final BreakContractDriverRecordDao breakContractDriverRecordDao;
@Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
......@@ -169,6 +173,9 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal truckLoad = driverTruckInfo.getLoad();
String truckNo = driverTruckInfo.getTruckNo();
// 司机接单限制
driverTakeOrderLimit(driverTruckInfo.getUserNo());
LocalDateTime now = LocalDateTime.now();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.ORDER_INVALID);
......@@ -1296,6 +1303,17 @@ public class OrderChildServiceImpl implements OrderChildService {
}
/**
* 司机接单限制
*/
private void driverTakeOrderLimit(Long driverUserNo){
Optional<BreakContractDriverRecord> limitOptional = breakContractDriverRecordDao.selectLastLimitTimeByDriverUserNo(driverUserNo);
if (limitOptional.isPresent()){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_DRIVER_TAKE_ORDER_TIME_LIMIT,
PerformanceResultEnum.ORDER_CHILD_DRIVER_TAKE_ORDER_TIME_LIMIT.getMsg()+LocalDateTimeUtils.convertLocalDateTimeToString(limitOptional.get().getLimitTime(), "yyyy-MM-dd HH:mm"));
}
}
/**
* 拉运吨数检测
*/
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论