version/doc/RCSÊäËÍÏßÂß¼ÊáÀí.xmindBinary files differ
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -296,7 +296,7 @@ return o2.getPriority() - o1.getPriority(); } }); Integer backpack = agvService.getBackpack(agv); Integer backpack = agvService.getBackpack(agvId); if (taskList.size() > backpack) { taskList = taskList.subList(0, backpack); } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
@@ -1,5 +1,6 @@ package com.zy.acs.manager.core.service; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.entity.Sta; @@ -9,7 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.Objects; // man_segment: start_time, end_time /** @@ -29,6 +30,9 @@ @Service public class TransferStationHandler { private static final long LOAD_DELAY_MS = 15000L; // load ( inbound ) delay timeout private static final long PLACE_DELAY_MS = 15000L; // place ( outbound ) delay timeout @Autowired private SegmentService segmentService; @Autowired @@ -41,15 +45,16 @@ private StaService staService; /** * * åè´§ï¼å ¥åºï¼ï¼å¨åå®ç¬¬ä¸ä¸ªè´§çæ¶åï¼æ å¿æ»çè¾éçº¿ä¼æä¸ä¸ä¸ªè´§ç©ï¼æä»¥å»ºè®®AGVå¨åå°çå¾ ä¸æ®µæ¶é´ * æ¾è´§ï¼åºåºï¼ï¼å¯è½æ¤æ¶AGVä¸é¢å ¶ä»èç¯çæç®±ä¹æ¯åºåºå°è¿ä¸ªæ»çè¾éçº¿ï¼æä»¥çè¾é线æç¬¬ä¸ä¸ªæç®±è¿èµ°ä¹åï¼åæ¾ç¬¬äºä¸ª * è¦å ready-for-next */ // return is need wait public boolean hasDelayAtSta(Segment segment) { if (segment == null) { public boolean hasDelayAtSta(Segment currSeg) { if (currSeg == null) { throw new NullPointerException("segment is null in hasDelayAtSta."); } // 夿AGVæ¯å¦å¨æ»å¨è¾é线å Code currentCode = agvDetailService.getCurrentCode(segment.getAgvId()); Code currentCode = agvDetailService.getCurrentCode(currSeg.getAgvId()); if (null == currentCode) { return false; } @@ -58,15 +63,48 @@ return false; } // å¦æä¸ºç¬¬ä¸ä¸ªsegmentï¼æ²¡æprevious segmentï¼ï¼åä¸éè¦çå¾ Segment preSeg = segmentService.getPreviousStepOfFinish(segment.getTravelId(), segment.getSerial()); if (preSeg == null) { Segment preSeg = segmentService.getPreviousStepOfFinish(currSeg.getTravelId(), currSeg.getSerial()); if (preSeg == null || null == preSeg.getEndTime()) { return false; } Date preSegEndTime = preSeg.getEndTime(); if (null == preSegEndTime) { TaskPosDto.PosType currPosType = TaskPosDto.PosType.of(currSeg.getPosType()); TaskPosDto.PosType prePosType = TaskPosDto.PosType.of(preSeg.getPosType()); if (prePosType == null || currPosType == null) { return false; } Date now = new Date(); long preEndTime = preSeg.getEndTime().getTime(); long now = System.currentTimeMillis(); Long agvId = currSeg.getAgvId(); // inbound if (prePosType.equals(TaskPosDto.PosType.ORI_STA)) { // èç¯æªæ»¡æç Integer backpack = agvService.getBackpack(agvId); int countRemainingBackpack = segmentService.countRemainingBackpack(currSeg.getTravelId(), agvId); if (countRemainingBackpack >= backpack) { return false; } // timeout return (now - preEndTime) < LOAD_DELAY_MS; } // outbound if (prePosType == TaskPosDto.PosType.DEST_STA) { // è¿ç»å壿ç if (currPosType != TaskPosDto.PosType.DEST_STA) { return false; } if (!Objects.equals(preSeg.getEndNode(), currSeg.getEndNode())) { return false; } // timeout return (now - preEndTime) < PLACE_DELAY_MS; } return false; } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/SegmentMapper.java
@@ -10,4 +10,6 @@ List<String> getGroupNo(@Param("state")String state, @Param("agvId")Long agvId, @Param("groupNo")String groupNo); int countRemainingBackpack(@Param("travelId") Long travelId, @Param("agvId") Long agvId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java
@@ -38,7 +38,7 @@ List<VehicleDto> getVehicleDtoList(List<String> noIncluded); Integer getBackpack(Agv agv); Integer getBackpack(Long agvId); Agv findByPosition(Long codeId); zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -28,4 +28,6 @@ Segment getCurrRunningSeg(Long agvId, Long codeId); int countRemainingBackpack(Long travelId, Long agvId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
@@ -266,11 +266,14 @@ } @Override public Integer getBackpack(Agv agv) { public Integer getBackpack(Long agvId) { if (null == agvId) { return 0; } // if (null != agv.getStage()) { // return agv.getStage(); // } AgvModel agvModel = agvModelService.getByAgvId(agv.getId()); AgvModel agvModel = agvModelService.getByAgvId(agvId); assert null != agvModel; return agvModel.getBackpack(); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -163,4 +163,9 @@ return segments.stream().findFirst().orElse(null); } @Override public int countRemainingBackpack(Long travelId, Long agvId) { return this.baseMapper.countRemainingBackpack(agvId, travelId); } } zy-acs-manager/src/main/resources/mapper/manager/SegmentMapper.xml
@@ -23,6 +23,22 @@ </where> </sql> <select id="countRemainingBackpack" resultType="int"> SELECT COUNT(DISTINCT backpack) FROM man_segment WHERE 1=1 AND agv_id = #{agvId} <if test="travelId != null"> AND travel_id = #{travelId} </if> AND deleted = 0 AND status = 1 AND backpack IS NOT NULL AND backpack > 0 AND state != 'FINISH' </select> <select id="getGroupNo" resultType="java.lang.String"> SELECT group_id FROM ( zy-acs-manager/src/main/resources/mapper/manager/StaMapper.xml
@@ -9,8 +9,15 @@ WHERE id = #{staId} AND deleted = 0 AND status = 1 AND (capacity - occ_cnt - rsv_in_cnt) >= #{qty} AND (capacity - rsv_in_cnt) >= #{qty} </update> <!-- UPDATE man_sta SET rsv_in_cnt = rsv_in_cnt + #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND (capacity - occ_cnt - rsv_in_cnt) >= #{qty}--> <update id="releaseReserveIn"> UPDATE man_sta @@ -25,13 +32,20 @@ <update id="confirmReserveIn"> UPDATE man_sta SET rsv_in_cnt = rsv_in_cnt - #{qty}, occ_cnt = occ_cnt + #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND rsv_in_cnt >= #{qty} </update> <!-- UPDATE man_sta SET rsv_in_cnt = rsv_in_cnt - #{qty}, occ_cnt = occ_cnt + #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND rsv_in_cnt >= #{qty}--> <update id="tryReserveOut"> UPDATE man_sta @@ -40,8 +54,15 @@ WHERE id = #{staId} AND deleted = 0 AND status = 1 AND (occ_cnt - rsv_out_cnt) >= #{qty} AND (capacity - rsv_out_cnt) >= #{qty} </update> <!-- UPDATE man_sta SET rsv_out_cnt = rsv_out_cnt + #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND (occ_cnt - rsv_out_cnt) >= #{qty}--> <update id="releaseReserveOut"> UPDATE man_sta @@ -56,14 +77,21 @@ <update id="confirmReserveOut"> UPDATE man_sta SET rsv_out_cnt = rsv_out_cnt - #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND rsv_out_cnt >= #{qty} </update> <!-- UPDATE man_sta SET rsv_out_cnt = rsv_out_cnt - #{qty}, occ_cnt = occ_cnt - #{qty}, update_time = NOW() WHERE id = #{staId} AND deleted = 0 AND status = 1 AND rsv_out_cnt >= #{qty} AND occ_cnt >= #{qty} </update> AND occ_cnt >= #{qty}--> <select id="selectAvailableOutSta" resultType="com.zy.acs.manager.manager.entity.Sta"> SELECT * @@ -71,8 +99,14 @@ WHERE 1=1 AND deleted = 0 AND status = 1 AND (IFNULL(occ_cnt, 0) - IFNULL(rsv_out_cnt, 0)) >= #{minAvailableQty} AND (IFNULL(capacity, 0) - IFNULL(rsv_out_cnt, 0)) >= #{minAvailableQty} </select> <!-- SELECT * FROM man_sta WHERE 1=1 AND deleted = 0 AND status = 1 AND (IFNULL(occ_cnt, 0) - IFNULL(rsv_out_cnt, 0)) >= #{minAvailableQty}--> <select id="selectAvailableInSta" resultType="com.zy.acs.manager.manager.entity.Sta"> SELECT * @@ -80,8 +114,14 @@ WHERE 1=1 AND deleted = 0 AND status = 1 AND (IFNULL(capacity, 0) - IFNULL(occ_cnt, 0) - IFNULL(rsv_in_cnt, 0)) >= #{minAvailableQty} AND (IFNULL(capacity, 0) - IFNULL(rsv_in_cnt, 0)) >= #{minAvailableQty} </select> <!-- SELECT * FROM man_sta WHERE 1=1 AND deleted = 0 AND status = 1 AND (IFNULL(capacity, 0) - IFNULL(occ_cnt, 0) - IFNULL(rsv_in_cnt, 0)) >= #{minAvailableQty}--> <!-- å ³èæ¥è¯¢sql --> <sql id="selectSql">