From 1725fe3afb54e76d490e3efb4f14931960618eae Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期三, 03 四月 2024 09:55:53 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/RouteUtils.java | 32 ++++++++++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 52 ++++++++++++++-----------
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 1
src/main/resources/mapper/WrkMastStaMapper.xml | 11 +++++
4 files changed, 73 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index 7ece0f1..c77cb80 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -18,6 +18,7 @@
* */
Integer selectAllWrkCount(@Param("type")Integer type);
Integer selectAllWrkStsCount(@Param("type")Integer type,@Param("wrkSts")Integer wrkSts);
+ WrkMastSta selectAllWrkStsCountWrkMastSta(@Param("type")Integer type,@Param("wrkSts")Integer wrkSts);
/*
* 鑾峰彇鎵�鏈夊彲鎵ц浠诲姟
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 1c2fce9..b2ad115 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4084,10 +4084,15 @@
* */
public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
try{
- Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
- if (integer==0){
+// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+// if (integer==0){
+// return;
+// }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0);
+ if (Cools.isEmpty(wrkMastSta)){
return;
}
+ Integer[] rgvRunSta = RouteUtils.RgvRunSta(wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
boolean signRgv = true;
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4102,14 +4107,27 @@
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (!(rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
&& rgvProtocol.getTaskNo1()==0
&& rgvProtocol.getTaskNo2()==0
&& rgvProtocol.getStatusType1() == RgvStatusType.IDLE
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- )) {
+ ) {
+// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
+ if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
+ signRgv = false;
+ break;
+ }
+ if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
+ signRgv = false;
+ break;
+ } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
+ signRgv = false;
+ break;
+ }
+ }else {
signRgv = false;
break;
}
@@ -4119,11 +4137,6 @@
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
- continue;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
continue;
}
@@ -4137,16 +4150,9 @@
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
- continue;
- }
- if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
- continue;
- } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
- continue;
- }
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
+ rgvAvoidanceXY(rgvProtocol.getRgvNo(),rgvRunSta);
rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ break;
}
}
}
@@ -4194,10 +4200,10 @@
/*
* 灏忚溅XY绉诲姩 閬胯
* */
- public synchronized boolean rgvAvoidanceXY(Integer rgvId){
+ public synchronized boolean rgvAvoidanceXY(Integer rgvId, Integer[] rgvRunSta){
if (rgvId==1){
try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
@@ -4205,7 +4211,7 @@
rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
//basRgvMap.getLockStartRoute().shortValue()
- rgvCommand.setSourceStaNo1( (short)101);
+ rgvCommand.setSourceStaNo1(rgvRunSta[0].shortValue());
rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
@@ -4220,14 +4226,14 @@
}
}else {
try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙�
rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐�
- rgvCommand.setSourceStaNo2((short)117);
+ rgvCommand.setSourceStaNo2(rgvRunSta[1].shortValue());
rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭
if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index 8f42bc4..8c5be63 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -3,6 +3,8 @@
import java.util.ArrayList;
import java.util.List;
import static java.util.stream.Collectors.toList;
+
+import com.zy.asrs.entity.WrkMastSta;
import com.zy.core.enums.RouteCollectCountType;
import springfox.documentation.spring.web.json.Json;
@@ -347,6 +349,36 @@
return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);
}
+ public static Integer[] RgvRunSta(Integer runStaStart,Integer runStaEnd){
+ int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaStart);
+ int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaEnd);
+ if (ia<=ib){
+ return new Integer[]{runStaStart,runStaEnd};
+ }else {
+ return new Integer[]{runStaEnd,runStaStart};
+ }
+
+ }
+
+ public static boolean RgvRunStaSign(Integer staBow,Integer runStaEnd,Integer rgvNo){
+ int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(staBow);
+ int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(runStaEnd);
+ if (rgvNo==1){
+ if (ia>ib){
+ return true;//闇�瑕侀伩璁�
+ }else {
+ return false;//涓嶉渶瑕侀伩璁�
+ }
+ }else {
+ if (ia<ib){
+ return true;//闇�瑕侀伩璁�
+ }else {
+ return false;//涓嶉渶瑕侀伩璁�
+ }
+ }
+
+ }
+
public static void main(String[] arge){
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 6650f59..27ab049 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -93,6 +93,17 @@
</if>
</select>
+ <select id="selectAllWrkStsCount" resultMap="BaseResultMap">
+ select top 1 * from asr_wrk_mast_sta
+ where 1=1
+ <if test="type!=null">
+ and type = #{type}
+ </if>
+ <if test="wrkSts!=null">
+ and wrk_sts = #{wrkSts}
+ </if>
+ </select>
+
--
Gitblit v1.9.1