| package com.zy.acs.manager.manager.service.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.zy.acs.manager.manager.entity.Segment; | 
| import com.zy.acs.manager.manager.enums.SegmentStateType; | 
| import com.zy.acs.manager.manager.mapper.SegmentMapper; | 
| import com.zy.acs.manager.manager.service.AgvService; | 
| import com.zy.acs.manager.manager.service.SegmentService; | 
| import com.zy.acs.framework.common.Cools; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.util.List; | 
|   | 
| @Slf4j | 
| @Service("segmentService") | 
| public class SegmentServiceImpl extends ServiceImpl<SegmentMapper, Segment> implements SegmentService { | 
|   | 
|     @Autowired | 
|     private AgvService agvService; | 
|   | 
|     @Override | 
|     public Segment getNextStepOfInit(Long travelId, Integer serial) { | 
|         return this.getOne(new LambdaQueryWrapper<Segment>() | 
|                 .eq(Segment::getTravelId, travelId) | 
|                 .eq(Segment::getSerial, serial + 1) | 
|                 .eq(Segment::getState, SegmentStateType.INIT.toString()) | 
|         ); | 
|     } | 
|   | 
|     @Override | 
|     public Segment getJustWaitingSeg(Long agvId) { | 
|         if (null == agvId) { | 
|             return null; | 
|         } | 
|         List<Segment> waitingSegList = this.getByAgvAndState(agvId, SegmentStateType.WAITING.toString()); | 
|         if (Cools.isEmpty(waitingSegList)) { | 
|             return null; | 
|         } else { | 
|             if (waitingSegList.size() > 1) { | 
|                 log.error("{}号车辆存在多个等待中的Segment!!!", agvService.getById(agvId).getUuid()); | 
|             } | 
|             return waitingSegList.get(0); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public List<Segment> getSamePos(List<Segment> segmentList) { | 
|         return null; | 
|     } | 
|   | 
|     @Override | 
|     public List<Segment> getByAgvAndState(Long agvId, String state) { | 
|         return this.list(new LambdaQueryWrapper<Segment>() | 
|                 .eq(Segment::getAgvId, agvId) | 
|                 .eq(Segment::getState, state) | 
|                 .orderByAsc(Segment::getSerial) | 
|         ); | 
|     } | 
|   | 
| } |