| | |
| | | package com.zy.acs.manager.manager.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | 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.manager.entity.Segment; |
| | | import com.zy.acs.manager.manager.entity.Travel; |
| | | import com.zy.acs.manager.manager.enums.SegmentStateType; |
| | |
| | | import com.zy.acs.manager.manager.mapper.TravelMapper; |
| | | import com.zy.acs.manager.manager.service.SegmentService; |
| | | import com.zy.acs.manager.manager.service.TravelService; |
| | | import com.zy.acs.framework.exception.CoolException; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | @Slf4j |
| | | @Service("travelService") |
| | |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public Travel findRollerWaitingTravel(Long agvId, Long code) { |
| | | return this.getOne(new LambdaQueryWrapper<Travel>() |
| | | .eq(Travel::getAgvId, agvId) |
| | | .eq(Travel::getState, TravelStateType.RUNNING.toString()) |
| | | .eq(Travel::getRollerWaiting, 1) |
| | | .eq(Travel::getRollerWaitingCode, code) |
| | | .orderByDesc(Travel::getCreateTime) |
| | | .last("limit 1") |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean hasRollerWaiting(Long agvId) { |
| | | if (null == agvId) { |
| | | return false; |
| | | } |
| | | return 0 < this.count(new LambdaQueryWrapper<Travel>() |
| | | .eq(Travel::getAgvId, agvId) |
| | | .eq(Travel::getState, TravelStateType.RUNNING.toString()) |
| | | .eq(Travel::getRollerWaiting, 1) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean markRollerWaiting(Long travelId, Long codeId) { |
| | | if (Cools.isEmpty(travelId, codeId)) { |
| | | return false; |
| | | } |
| | | Travel travel = this.getById(travelId); |
| | | if (travel == null) { |
| | | return false; |
| | | } |
| | | if (!TravelStateType.RUNNING.toString().equals(travel.getState())) { |
| | | return false; |
| | | } |
| | | if (travel.getRollerWaiting() == 1 |
| | | && Objects.equals(travel.getRollerWaitingCode(), codeId)) { |
| | | return true; |
| | | } |
| | | travel.setRollerWaiting(1); |
| | | travel.setRollerWaitingCode(codeId); |
| | | if (!this.updateById(travel)) { |
| | | log.error("travel [{}] failed to mark roller waiting (code={})", travelId, codeId); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean clearRollerWaiting(Long travelId) { |
| | | if (null == travelId) { |
| | | return false; |
| | | } |
| | | Travel travel = this.getById(travelId); |
| | | if (travel == null) { |
| | | return false; |
| | | } |
| | | // if (!TravelStateType.RUNNING.toString().equals(travel.getState())) { |
| | | // return false; |
| | | // } |
| | | if (travel.getRollerWaiting() == 0 && Cools.isEmpty(travel.getRollerWaitingCode())) { |
| | | return true; |
| | | } |
| | | if (!this.update( |
| | | new LambdaUpdateWrapper<Travel>() |
| | | .eq(Travel::getId, travelId) |
| | | .set(Travel::getRollerWaiting, 0) |
| | | .set(Travel::getRollerWaitingCode, null) |
| | | )) { |
| | | log.error("travel [{}] failed to clear roller waiting", travelId); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | } |