zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/Constants.java
@@ -5,6 +5,9 @@ * Created by vincent on 2019-10-29 15:55 */ public class Constants { public static final String HANDLE = "HANDLE"; /** * 默认成功码 */ zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -171,7 +171,7 @@ task.setPriority(999); task.setIoTime(now); task.setStartTime(now); task.setMemo("HANDLE"); task.setMemo("AUTO"); if (!taskService.save(task)) { throw new BusinessException(task.getSeqNum() + "任务保存失败"); } zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/ConveyorController.java
@@ -38,16 +38,18 @@ .orderByAsc(Sta::getStaNo) ); for (Sta sta : list) { resultList.add(new ConveyorQueryResult(sta.getStaNo(), Boolean.TRUE)); resultList.add(new ConveyorQueryResult(sta.getStaNo() , staService.hasWorkingAgv(sta.getId()))); } } else { for (String staNo : staNos) { Sta sta = staService.selectByStaNo(staNo); if (null == sta) { if (null == sta || !sta.getStatus().equals(StatusType.ENABLE.val)) { resultList.add(new ConveyorQueryResult(staNo, Boolean.FALSE)); continue; } resultList.add(new ConveyorQueryResult(staNo, Boolean.TRUE)); resultList.add(new ConveyorQueryResult(staNo , staService.hasWorkingAgv(sta.getId()))); } } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -670,6 +670,7 @@ // generate travel travelService.finishAll(agvId); Travel travel = new Travel(); travel.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); travel.setTravelId(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); @@ -805,6 +806,7 @@ } // generate travel travelService.finishAll(agvId); Travel travel = new Travel(); travel.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); travel.setTravelId(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java
@@ -18,4 +18,6 @@ boolean isRoller(Long staId); Boolean hasWorkingAgv(Long staId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TravelService.java
@@ -6,4 +6,7 @@ public interface TravelService extends IService<Travel> { void checkFinish(Long travelId); void finishAll(Long agvId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
@@ -3,17 +3,31 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.SegmentStateType; import com.zy.acs.manager.manager.enums.StaTypeType; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.enums.TravelStateType; import com.zy.acs.manager.manager.mapper.StaMapper; import com.zy.acs.manager.manager.service.StaService; import com.zy.acs.manager.manager.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Service("staService") public class StaServiceImpl extends ServiceImpl<StaMapper, Sta> implements StaService { @Autowired private AgvService agvService; @Autowired private AgvDetailService agvDetailService; @Autowired private SegmentService segmentService; @Autowired private TravelService travelService; @Override public Sta selectByStaNo(String staNo) { @@ -53,4 +67,56 @@ return StaTypeType.ROLLER.val() == sta.getStaType(); } @Override public Boolean hasWorkingAgv(Long staId) { Sta sta = this.getById(staId); Long codeId = sta.getCode(); if (null == codeId) { return false; } List<Long> agvIds = agvService.list(new LambdaQueryWrapper<Agv>() .select(Agv::getId) .eq(Agv::getStatus, StatusType.ENABLE.val)) .stream().map(Agv::getId).collect(Collectors.toList()); if (Cools.isEmpty(agvIds)) { return false; } for (Long agvId : agvIds) { Code currentCode = agvDetailService.getCurrentCode(agvId); if (null == currentCode) { continue; } if (!currentCode.getId().equals(codeId)) { continue; } // if hit return true Segment lastSeg = segmentService.getOne(new LambdaQueryWrapper<Segment>() .eq(Segment::getAgvId, agvId).eq(Segment::getEndNode, codeId) .orderByDesc(Segment::getId).last("LIMIT 1")); if (null == lastSeg) { return false; // continue; } Travel travel = travelService.getById(lastSeg.getTravelId()); if (travel.getState().equals(TravelStateType.FINISH.toString())) { return false; } // running travel List<Segment> segments = segmentService.list(new LambdaQueryWrapper<Segment>() .eq(Segment::getTravelId, travel.getId())); for (Segment segment : segments) { if (segment.getEndNode().equals(codeId) && segment.getState().equals(SegmentStateType.RUNNING.toString()) && (segment.getPosType().equals(TaskPosDto.PosType.ORI_STA.toString()) || segment.getPosType().equals(TaskPosDto.PosType.DEST_STA.toString())) ) { return true; } } } return false; } } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
@@ -6,6 +6,7 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.common.constant.Constants; import com.zy.acs.manager.common.domain.BaseParam; import com.zy.acs.manager.common.domain.PageParam; import com.zy.acs.manager.common.domain.PageResult; @@ -43,6 +44,12 @@ private LaneService laneService; @Autowired private StaReserveService staReserveService; @Autowired private SegmentService segmentService; @Autowired private ActionService actionService; @Autowired private TravelService travelService; @Override public PageResult<Task> pageRel(PageParam<Task, BaseParam> pageParam) { @@ -98,15 +105,37 @@ if (null == task) { return Boolean.FALSE; } Date now = new Date(); // stock this.maintainLocAndStaHandler(task, Boolean.TRUE); // task task.setTaskSts(TaskStsType.COMPLETE.val()); task.setUpdateTime(new Date()); task.setUpdateTime(now); task.setUpdateBy(userId); task.setMemo(Constants.HANDLE + " " + TaskStsType.COMPLETE); if (!this.updateById(task)) { throw new CoolException(BaseRes.ERROR); } // bus busService.checkoutComplete(task.getBusId()); // segment List<Segment> segments = segmentService.list(new LambdaQueryWrapper<Segment>().eq(Segment::getTaskId, taskId)); if (!Cools.isEmpty(segments)) { for (Segment segment : segments) { if (segment.getState().equals(SegmentStateType.FINISH.toString())) { continue; } segment.setState(SegmentStateType.FINISH.toString()); segment.setUpdateTime(now); segment.setUpdateBy(userId); segment.setMemo(Constants.HANDLE); if (!segmentService.updateById(segment)) { throw new CoolException(BaseRes.ERROR); } } // travel travelService.checkFinish(segments.get(0).getTravelId()); } return Boolean.TRUE; } @@ -117,15 +146,36 @@ if (null == task) { return Boolean.FALSE; } Date now = new Date(); // stock this.maintainLocAndStaHandler(task, Boolean.FALSE); // task task.setTaskSts(TaskStsType.CANCEL.val()); task.setUpdateTime(new Date()); task.setUpdateTime(now); task.setUpdateBy(userId); task.setMemo(Constants.HANDLE + " " + TaskStsType.CANCEL); if (!this.updateById(task)) { throw new CoolException(BaseRes.ERROR); } busService.checkoutComplete(task.getBusId()); // segment List<Segment> segments = segmentService.list(new LambdaQueryWrapper<Segment>().eq(Segment::getTaskId, taskId)); if (!Cools.isEmpty(segments)) { for (Segment segment : segments) { if (segment.getState().equals(SegmentStateType.FINISH.toString())) { continue; } segment.setState(SegmentStateType.FINISH.toString()); segment.setUpdateTime(now); segment.setUpdateBy(userId); segment.setMemo(Constants.HANDLE); if (!segmentService.updateById(segment)) { throw new CoolException(BaseRes.ERROR); } } // travel travelService.checkFinish(segments.get(0).getTravelId()); } return Boolean.TRUE; } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TravelServiceImpl.java
@@ -10,12 +10,14 @@ 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; @Slf4j @Service("travelService") public class TravelServiceImpl extends ServiceImpl<TravelMapper, Travel> implements TravelService { @@ -45,4 +47,17 @@ } } @Override public void finishAll(Long agvId) { List<Travel> travelList = this.list(new LambdaQueryWrapper<Travel>() .eq(Travel::getAgvId, agvId).eq(Travel::getState, TravelStateType.RUNNING.toString())); for (Travel travel : travelList) { travel.setState(TravelStateType.FINISH.toString()); travel.setUpdateTime(new Date()); if (!this.updateById(travel)) { log.error("failed to finish travel all"); } } } }