From 6c265faa61e5cf0ea8a0c4fce81355a52e211de0 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 21 十一月 2023 16:08:46 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/RgvThread.java | 20 ++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 130 +++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/zy/core/MainProcess.java | 12 ++-
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 1
src/main/java/com/zy/core/enums/RgvTaskModeType.java | 2
src/main/resources/mapper/WrkMastStaMapper.xml | 12 ++++
6 files changed, 171 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index 680f267..cf94005 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -17,6 +17,7 @@
* 鑾峰彇鎵�鏈変换鍔℃暟閲�
* */
Integer selectAllWrkCount(@Param("type")Integer type);
+ Integer selectAllWrkStsCount(@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 4c8de9f..00617eb 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3832,6 +3832,16 @@
) {
log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
if (rgvProtocol.getTaskNo1()!=0){
+ if (rgvProtocol.getTaskNo1()==9999){
+ boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ break;
+ }
WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){
log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
@@ -3844,7 +3854,20 @@
}
wrkMastSta.setWrkSts(3);
wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
}else if (rgvProtocol.getTaskNo2()!=0){
+ if (rgvProtocol.getTaskNo2()==9999){
+ boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ break;
+ }
WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().intValue());
if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
@@ -3857,6 +3880,9 @@
}
wrkMastSta.setWrkSts(3);
wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
}else {
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
}
@@ -4055,6 +4081,108 @@
}
}
+ /*
+ * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
+ * */
+ public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
+ try{
+ Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+ if (integer==0){
+ return;
+ }
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ 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;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && rgvProtocol.getTaskNo1()==0
+ && rgvProtocol.getTaskNo2()==0
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
+ continue;
+ }
+ rgvAvoidanceXY(rgvProtocol.getRgvNo());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }
+ }
+ }catch (Exception e){
+ log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+ log.error("4109琛�"+e);
+ }
+ }
+
+ /*
+ * 鍒锋柊鍦板浘鏁版嵁
+ * */
+ public synchronized void refreshRgvMap() {
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ 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;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
+ && (rgvProtocol.getTaskNo2()==0 || rgvProtocol.getTaskNo2()==9999)
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ }
+ }
+ }catch (Exception e){
+ log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+ log.error("4109琛�"+e);
+ }
+ }
+
+ /*
+ * 灏忚溅XY绉诲姩 閬胯
+ * */
+ public synchronized boolean rgvAvoidanceXY(Integer rgvId){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1((short)9999); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(9, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+
+ }
+ }
+
/*
* 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
@@ -4193,9 +4321,11 @@
log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
return false;
} else {
+ log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
return true;
}
}catch (Exception e){
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
return false;
}
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 16f7ab0..ca6aadc 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -45,13 +45,14 @@
//鍒濆鍖朢GV鍦板浘
// mainService.initRgvMap();
+ mainService.refreshRgvMap();
// 婕旂ず
mainService.crnDemoOfLocMove1();
// 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
// mainService.ioConvert();
// 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
mainService.generateStoreWrkFile(); // 缁勬墭
- mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
+// mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
// 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
mainService.stnToCrnStnPick();
// 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
@@ -66,10 +67,10 @@
/////////////////////////////////////RGV璋冨害/////////////////////////////////////
// //缁戝畾灏忚溅鏂规硶
- mainService.rgvBindSte();
- mainService.rgvBindSte2();
-// // 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
- mainService.rgvIoExecute();
+// mainService.rgvBindSte();
+// mainService.rgvBindSte2();
+//// // 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
+// mainService.rgvIoExecute();
// // RGV鍏ュ簱 ===>> 鏍规嵁RGV瀹屾垚淇″彿,鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
// mainService.rgvFinished();
// // 鍏ュ嚭搴� ===>> RGV鍑哄簱绔欏埌绯荤粺鍏ュ嚭搴撶珯
@@ -84,6 +85,7 @@
//鎵ц灏忚溅绌烘澘鎼繍浠诲姟
mainService.rgvRunWrkMastEmptyStaPut();//鏀�
mainService.rgvRunWrkMastEmptyStaTake();//鍙�
+ mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
/////////////////////////////////////RGV璋冨害/////////////////////////////////////
diff --git a/src/main/java/com/zy/core/enums/RgvTaskModeType.java b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
index e5d2748..290b43d 100644
--- a/src/main/java/com/zy/core/enums/RgvTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
@@ -9,7 +9,7 @@
// X_MOVE(4), // 绔欎綅绉昏浆
// Y_MOVE(5), // 绔欎綅绉昏浆
// XY_MOVE(6), // 绔欎綅绉昏浆
-// GO_ORIGIN(7), // 鍥炲師鐐�
+ GO_ORIGIN(7), // 鍥炲師鐐�
// BACK_ORIGIN(8), // 鍥炲弽鍘熺偣
// CLEAR(9), // 娓呴敊
;
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index c3dd9d8..94d8059 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -99,6 +99,26 @@
command.setCommand((short)0);
write(command);
break;
+ // 鍥炲師鐐� 閬胯
+ case 9:
+ RgvCommand commandAvoidanceXY = (RgvCommand) task.getData();
+ if (null == commandAvoidanceXY) {
+ commandAvoidanceXY = new RgvCommand();
+ }
+ commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿
+ commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙�
+ commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
+ commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+ commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯
+ commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔�
+ commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+ commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
+ commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+ commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯
+ commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔�
+ commandAvoidanceXY.setCommand((short)0);
+ write(commandAvoidanceXY);
+ break;
default:
break;
}
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 429d50c..e932388 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -82,6 +82,18 @@
</if>
</select>
+ <select id="selectAllWrkCount" resultMap="Integer">
+ select count(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>
+
+
</mapper>
--
Gitblit v1.9.1