zhang
2 天以前 bd956ec24c5995e6a2a585d6a4987c6b7de372c1
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -4,7 +4,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.exception.CoolException;
import com.zy.acs.manager.core.domain.TaskPosDto;
import com.zy.acs.manager.common.constant.Constants;
import com.zy.acs.manager.manager.entity.Segment;
import com.zy.acs.manager.manager.entity.Task;
import com.zy.acs.manager.manager.enums.ActionStsType;
@@ -60,10 +60,17 @@
    @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())
//        );
        // 不是固定查询一个,而是查询一个片段,因为存在人为完结任务导致查不到下一个+1的片段
        return this.getOne(new LambdaQueryWrapper<Segment>()
                .eq(Segment::getTravelId, travelId)
                .eq(Segment::getSerial, serial + 1)
                .eq(Segment::getState, SegmentStateType.INIT.toString())
                .orderByDesc(Segment::getSerial)
                .last(Constants.LIMIT_ONE)
        );
    }
@@ -74,7 +81,7 @@
                .eq(Segment::getSerial, serial - 1)
                .eq(Segment::getState, SegmentStateType.FINISH.toString())
                .orderByDesc(Segment::getId)
                .last("limit 1")
                .last(Constants.LIMIT_ONE)
        );
    }
@@ -154,39 +161,42 @@
    }
    @Override
    public Segment getCurrRunningSeg(Long agvId, Long codeId) {
    public Segment getCurrWaitingSeg(Long travelId, Long agvId) {
        List<Segment> segments = this.list(new LambdaQueryWrapper<Segment>()
                .eq(Segment::getTravelId, travelId)
                .eq(Segment::getAgvId, agvId)
                .eq(Segment::getState, SegmentStateType.RUNNING.toString())
                .eq(Segment::getEndNode, codeId)
                .eq(Segment::getState, SegmentStateType.WAITING.toString())
                .orderByDesc(Segment::getId)
        );
        if (Cools.isEmpty(segments)) {
        }
        return segments.stream().findFirst().orElse(null);
    }
    @Override
    public Segment getCurrRunningSeg(Long travelId, Long agvId, Long codeId) {
        if (null == agvId) {
            return null;
        }
        LambdaQueryWrapper<Segment> wrapper = new LambdaQueryWrapper<Segment>()
                .eq(Segment::getAgvId, agvId)
                .eq(Segment::getState, SegmentStateType.RUNNING.toString());
        if (null != travelId) {
            wrapper.eq(Segment::getTravelId, travelId);
        }
        if (null != codeId) {
            wrapper.eq(Segment::getEndNode, codeId);
        }
        wrapper.orderByDesc(Segment::getId);
        List<Segment> segments = this.list(wrapper);
        if (Cools.isEmpty(segments)) {
        }
        return segments.stream().findFirst().orElse(null);
    }
    @Override
    public List<Integer> selectUsedBackpacks(Long travelId, Long agvId) {
        return this.baseMapper.selectUsedBackpacks(agvId, travelId);
    }
    @Override
    public Segment getRollerWaiting(Long agvId, Long codeId, TaskPosDto.PosType posType) {
        List<Segment> segments = this.list(new LambdaQueryWrapper<Segment>()
                .eq(Segment::getAgvId, agvId)
                .eq(Segment::getState, SegmentStateType.WAITING.toString())
                .eq(Segment::getEndNode, codeId)
                .eq(Segment::getPosType, posType.toString())
                .eq(Segment::getRollerWaiting, 1)
                .orderByDesc(Segment::getId)
        );
        if (Cools.isEmpty(segments)) {
            return null;
        }
        return segments.get(0);
        return this.baseMapper.selectUsedBackpacks(travelId, agvId);
    }
    @Override