package com.xiaopeng.order.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.order.XpOrderReassign; import com.xiaopeng.common.core.enums.OrderStatusEnum; import com.xiaopeng.order.mapper.XpOrderReassignMapper; import com.xiaopeng.order.service.IXpOrderReassignService; import com.xiaopeng.order.service.IXpOrderService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; import java.util.concurrent.TimeUnit; /** *

* 订单改派记录 服务实现类 *

* * @author mitao * @since 2026-02-05 */ @Service public class XpOrderReassignServiceImpl extends ServiceImpl implements IXpOrderReassignService { @Resource private IXpOrderService xpOrderService; /** * 获取没有完成的数据 * @return */ @Override public List findListNotComplete(){ return baseMapper.findListNotComplete(); } public XpOrderReassign getByOrderId(Long orderId){ LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(XpOrderReassign::getOrderId,orderId); return super.getOne(query); } @Override public boolean saveInfo(XpOrderReassign entity){ boolean b = false; XpOrderReassign byOrderId = getByOrderId(entity.getOrderId()); entity.setUpdateTime(LocalDateTime.now()); if(byOrderId == null){ entity.setCreateTime(LocalDateTime.now()); b = save(entity); }else{ boolean canceled = false; //修改数据 改派大于等于3次后将取消订单 entity.setId(byOrderId.getId()); entity.setReassignNum(byOrderId.getReassignNum()+1); if(!entity.getIsComplete() && entity.getReassignNum()>=3){//在改派订单中未获取到车辆 并改派次数 >=3 则直接完成 entity.setIsComplete(true); entity.setRemarks("改派3此后未获取匹配车辆,系统强制取消订单"); canceled = true; } b = updateById(entity); //是否取消订单 if(canceled){ xpOrderService.updateOrderStatus(entity.getOrderId(),OrderStatusEnum.CANCELED.getCode()); } } return b; } }