version/doc/RCSÊäËÍÏßÂß¼ÊáÀí.xmindBinary files differ
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -4,19 +4,17 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.CommonUtil; import com.zy.acs.manager.core.domain.AgvCntDto; import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.domain.FilterLaneDto; import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.StaTypeType; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.enums.TaskStsType; import com.zy.acs.manager.manager.enums.TaskTypeType; import com.zy.acs.manager.manager.enums.*; import com.zy.acs.manager.manager.service.*; import com.zy.acs.manager.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; @@ -91,12 +89,13 @@ return result; } @Transactional(rollbackFor = Exception.class) public synchronized String execute(Task task, AllocateSupport inbound, AllocateSupport normal) { // inbound roller station Sta rollerOriSta = getInboundRollerSta(task); String inboundAgv = tryAllocateForRoller(task, rollerOriSta, true); if (!Cools.isEmpty(inboundAgv)) { inbound.success(task, inboundAgv); inbound.success(task, inboundAgv, rollerOriSta); return inboundAgv; } @@ -104,13 +103,13 @@ Sta rollerDestSta = getOutboundRollerSta(task); String outboundAgv = tryAllocateForRoller(task, rollerDestSta, false); if (!Cools.isEmpty(outboundAgv)) { normal.success(task, outboundAgv); normal.success(task, outboundAgv, rollerDestSta); return outboundAgv; } String normalAgv = this.normalExecute(task); if (!Cools.isEmpty(normalAgv)) { normal.success(task, normalAgv); normal.success(task, normalAgv, null); return normalAgv; } @@ -206,17 +205,21 @@ } // has running task and within oriSta // List<Segment> currSeg = segmentService.getByAgvAndState(agvId, SegmentStateType.WAITING.toString()); int taskCnt = taskService.count(new LambdaQueryWrapper<Task>() .eq(Task::getAgvId, agvId) .eq(Task::getOriSta, sta.getId()) .and(wrapper -> wrapper .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()) .or() .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()) ) ); if (taskCnt == 0) { // int taskCnt = taskService.count(new LambdaQueryWrapper<Task>() // .eq(Task::getAgvId, agvId) // .eq(Task::getOriSta, sta.getId()) // .and(wrapper -> wrapper // .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()) // .or() // .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()) // ) // ); // if (taskCnt == 0) { // continue; // } // in TransferStationHandler.hasDelayAtSta Segment currSeg = segmentService.getRollerWaiting(agvId, sta.getCode(), TaskPosDto.PosType.ORI_STA); if (null == currSeg) { continue; } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateSupport.java
@@ -1,9 +1,10 @@ package com.zy.acs.manager.core.service; import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.manager.entity.Task; public interface AllocateSupport { void success(Task task, String agvNo); void success(Task task, String agvNo, Sta sta); } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -245,19 +245,44 @@ return; } List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList()); // List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList()); for (Task t : taskList) { String resultAgvNo = allocateService.execute(t // inbound , (task, agvNo) -> { , (task, agvNo, sta) -> { Long agvId = agvService.getAgvId(agvNo); List<Travel> travelList = travelService.list(new LambdaQueryWrapper<Travel>() .eq(Travel::getAgvId, agvId) .eq(Travel::getState, TravelStateType.RUNNING.toString()) .orderByDesc(Travel::getCreateTime)); if (Cools.isEmpty(travelList)) { throw new BusinessException("[Agv: " + agvNo + "]allocate inbound failed to find travel"); } Travel travel = travelList.get(0); List<Segment> currSegments = segmentService.list(new LambdaQueryWrapper<Segment>() .eq(Segment::getAgvId, agvId) .eq(Segment::getTravelId, travel.getId()) ); // load segment Segment currSeg = segmentService.getRollerWaiting(agvId, sta.getCode(), TaskPosDto.PosType.ORI_STA); // place segment task.setAgvId(agvId); task.setTaskSts(TaskStsType.ASSIGN.val()); task.setIoTime(now); task.setUpdateTime(now); if (!taskService.updateById(task)) { throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update"); } } // normal , (task, agvNo) -> { if (Cools.isEmpty(agvNo)) { return; } task.setAgvId(agvService.getAgvId(agvNo)); , (task, agvNo, sta) -> { Long agvId = agvService.getAgvId(agvNo); task.setAgvId(agvId); task.setTaskSts(TaskStsType.WAITING.val()); task.setIoTime(now); task.setUpdateTime(now); zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
@@ -12,7 +12,8 @@ import java.util.Objects; // man_segment: start_time, end_time // man_segment: start_time, end_time, alter table man_segment // add roller_waiting int(1) default 0 null comment 'æ»ç线çå¾ ' after end_time; /** * alter table man_sta * add capacity int null comment 'æ§½ä½æ°' after angle; @@ -87,6 +88,12 @@ return false; } // sign waiting if (currSeg.getRollerWaiting() == 0) { currSeg.setRollerWaiting(1); segmentService.updateById(currSeg); } // timeout return (now - preEndTime) < LOAD_DELAY_MS; } @@ -102,6 +109,12 @@ return false; } // sign waiting if (currSeg.getRollerWaiting() == 0) { currSeg.setRollerWaiting(1); segmentService.updateById(currSeg); } // timeout return (now - preEndTime) < PLACE_DELAY_MS; } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java
@@ -107,6 +107,12 @@ private Date endTime; /** * æ»ç线çå¾ 1: æ¯ 0: å¦ */ @ApiModelProperty(value= "æ»ç线çå¾ 1: æ¯ 0: å¦ ") private Integer rollerWaiting; /** * è¿åº¦ */ @ApiModelProperty(value= "è¿åº¦") zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -1,6 +1,7 @@ package com.zy.acs.manager.manager.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.enums.SegmentStateType; @@ -30,4 +31,6 @@ int countRemainingBackpack(Long travelId, Long agvId); Segment getRollerWaiting(Long agvId, Long codeId, TaskPosDto.PosType posType); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -4,6 +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.manager.entity.Segment; import com.zy.acs.manager.manager.entity.Task; import com.zy.acs.manager.manager.enums.ActionStsType; @@ -168,4 +169,20 @@ return this.baseMapper.countRemainingBackpack(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); } }