From 0e32b14a61afca8f7dbbe9851f47b57158abfdc1 Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期日, 21 一月 2024 10:40:56 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 439 ++++++++++++++++++++++--------------------------------
src/main/java/com/zy/core/MainProcess.java | 30 ++-
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 2
3 files changed, 200 insertions(+), 271 deletions(-)
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 20d24ee..c8364a7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1171,247 +1171,6 @@
}
/**
- * 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
- */
- public synchronized void rgvIoExecute() {
- for (RgvSlave rgv : slaveProperties.getRgv()) {
- RgvSlave rgvSlave=null;
- if (rgv.getId()==1){
- rgvSlave = slaveProperties.getRgv().get(1);
- }else {
- rgvSlave = slaveProperties.getRgv().get(0);
- }
-
- // 鑾峰彇RGV淇℃伅
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
-
- RgvThread rgvThreadSlave = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocolSlave = rgvThreadSlave.getRgvProtocol();
- BasRgv basRgvSlave = null;
- if (rgvProtocolSlave == null) {
- rgvSlave=null;
- }else {
- basRgvSlave = basRgvService.selectById(rgv.getId());
- if (basRgvSlave == null) {
- rgvSlave=null;
- }
- }
-
- BasRgv basRgv = basRgvService.selectById(rgv.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
- continue;
- }
-
- boolean signSlave=false;//姝ゅ鍒ゆ柇RgvSlave鏄惁宸茬粡瑙勯伩
- boolean signSlaveState=false;//姝ゅ鍒ゆ柇RgvSlave鏄惁绌洪棽
- Integer staSlave = 0;//姝ゅ璁板綍RgvSlave褰撳墠浣嶇疆
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
-// && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
-// && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
- ) {
-
- //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
- List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId());
- for (WrkMast wrkMast : wrkMasts) {
- if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
- if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
- continue;
- }
-
- //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- Integer staNo = wrkMast.getSourceStaNo();
- BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp == null) {
- continue;//鐩爣绔欎笉瀛樺湪
- }
- //璧峰璺緞
- int startPath = rgvProtocol.getRgvPos().intValue();
- //鐩爣璺緞鍊�
- int endPath = basDevp.getLocType3().intValue();
-// boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- if (pathUsed) {
- //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
- continue;
- }
- //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
- RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
- rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
- Date now = new Date();
- wrkMast.setWrkSts(3L);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
- }
- }
- } else if (wrkMast.getWrkSts() == 14) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 14鍑哄簱瀹屾垚
- if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
- continue;
- }
- if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
- continue;
- }
-
- //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- Integer staNo = wrkMast.getStaNo();
- BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp == null) {
- continue;//鐩爣绔欎笉瀛樺湪
- }
- //璧峰璺緞
- int startPath = rgvProtocol.getRgvPos().intValue();
- //鐩爣璺緞鍊�
- int endPath = basDevp.getLocType3().intValue();
- boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- if (pathUsed) {
- //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
- continue;
- }
- //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
- RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
- Date now = new Date();
- wrkMast.setWrkSts(5L);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
- }
- }
- } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
- if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
- continue;
- }
-
- //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- Integer staNo = wrkMast.getSourceStaNo();
- BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp == null) {
- continue;//鐩爣绔欎笉瀛樺湪
- }
- //璧峰璺緞
- int startPath = rgvProtocol.getRgvPos().intValue();
- //鐩爣璺緞鍊�
- int endPath = basDevp.getLocType3().intValue();
- boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- if (pathUsed) {
- //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
- continue;
- }
- //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
- RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
- rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
- Date now = new Date();
- wrkMast.setWrkSts(24L);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
- }
- }
- } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
- if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
- continue;
- }
- if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
- continue;
- }
-
- //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- Integer staNo = wrkMast.getStaNo();
- BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp == null) {
- continue;//鐩爣绔欎笉瀛樺湪
- }
- //璧峰璺緞
- int startPath = rgvProtocol.getRgvPos().intValue();
- //鐩爣璺緞鍊�
- int endPath = basDevp.getLocType3().intValue();
- boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- if (pathUsed) {
- //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
- continue;
- }
- //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
- RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), wrkMast.getWrkNo(), true);
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
- Date now = new Date();
- wrkMast.setWrkSts(26L);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
- }
- }
- }
- }
-
- }
- }
- }
-
- private boolean rgvIoExecuteWrk2To3() {
- return false;
- }
-
- /**
* 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
*/
public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
@@ -3175,7 +2934,7 @@
&& rgvProtocol.getStatusType1() == RgvStatusType.IDLE
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
+ && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
try {
WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep3(122);
@@ -4395,12 +4154,29 @@
StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
if (!Cools.isEmpty(wrkMast)){
- Thread.sleep(100);
+ Thread.sleep(200);
// 涓嬪彂绔欑偣淇℃伅
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
continue;
+ }
+ log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
+ try{
+ Thread.sleep(1000);
+ DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
+ log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
+ if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
+ staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
+ staProtocolEnd.setStaNo(wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
+ continue;
+ }
+ log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
+ }
+ }catch (Exception e){
+
}
}
wrkMastSta.setWrkSts(3);
@@ -4433,12 +4209,29 @@
StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
if (!Cools.isEmpty(wrkMast)){
- Thread.sleep(100);
+ Thread.sleep(200);
// 涓嬪彂绔欑偣淇℃伅
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(wrkMast.getStaNo());
if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
continue;
+ }
+ log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
+ try{
+ Thread.sleep(1000);
+ DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
+ log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
+ if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
+ staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
+ staProtocolEnd.setStaNo(wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
+ continue;
+ }
+ log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
+ }
+ }catch (Exception e){
+
}
}
wrkMastSta.setWrkSts(3);
@@ -4456,9 +4249,91 @@
}
}
/**
+ * 鍏ュ嚭搴� ===>> 灏忚溅浣滀笟涓嬪彂
+ */
+ public synchronized void rgvIoExecute(Integer sign) {
+ try{
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ // 鑾峰彇灏忚溅淇℃伅
+ boolean signWork = false;
+ 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.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0
+ && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
+ ) {
+ switch (sign){
+ case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
+ signWork = rgvRunWrkMastFullSta();
+ break;
+ case 2://鏀�//鎷嗙洏
+ signWork = rgvRunWrkMastEmptyStaPut();
+ break;
+ case 3://婊℃斁
+ signWork = rgvRunWrkMastEmptyStaPutFull();
+ break;
+ case 4://鍙栧彔鐩�
+ signWork = rgvRunWrkMastEmptyStaTake();
+ break;
+ case 5:////婊″彇
+ signWork = rgvRunWrkMastEmptyStaTakeFull();
+ break;
+ case 6:////鎻愬崌
+// signWork = qwe();
+ break;
+ default:
+// signWork = rgvRunWrkMastEmptyStaAvoidance();//閬胯
+ break;
+ }
+ }
+ for (int signCount = 1;!signWork && signCount<8;signCount++){
+ switch (signCount){
+ case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
+ signWork = rgvRunWrkMastFullSta();
+ break;
+ case 2://鏀�//鎷嗙洏
+ signWork = rgvRunWrkMastEmptyStaPut();
+ break;
+ case 3://婊℃斁
+ signWork = rgvRunWrkMastEmptyStaPutFull();
+ break;
+ case 4://鍙栧彔鐩�
+ signWork = rgvRunWrkMastEmptyStaTake();
+ break;
+ case 5:////婊″彇
+ signWork = rgvRunWrkMastEmptyStaTakeFull();
+ break;
+ case 6:////鎻愬崌
+// signWork = rgvRunWrkMastEmptyStaPut();
+ break;
+ default:
+// signWork = rgvRunWrkMastEmptyStaAvoidance();//閬胯
+ break;
+ }
+ }
+
+ }
+ }catch (Exception e){
+ log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
+ }
+ }
+ /**
* 鎵ц灏忚溅鎼繍浠诲姟
*/
- public synchronized void rgvRunWrkMastFullSta() {
+ public synchronized boolean rgvRunWrkMastFullSta() {
try{
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4474,6 +4349,8 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getLoaded1()==0
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
@@ -4490,6 +4367,10 @@
if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
continue;
}
+ BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ continue;
+ }
boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
if (sign){
boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
@@ -4500,7 +4381,7 @@
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
- return;
+ return true;
}else {
log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
}
@@ -4515,11 +4396,12 @@
log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
log.error("3875琛�"+e);
}
+ return false;
}
/**
* 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏
*/
- public synchronized void rgvRunWrkMastEmptyStaPut() {//鎷嗙洏
+ public synchronized boolean rgvRunWrkMastEmptyStaPut() {//鎷嗙洏
try{
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4535,9 +4417,11 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 )////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛�3 1銆�2灞傞兘鏈夌墿
+ && (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗�() 锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -4553,6 +4437,10 @@
}
boolean sign = false;
if ( wrkMastSta.getStaEnd()!=0){//鏀�
+ BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ continue;
+ }
sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏
}else {
continue;
@@ -4566,7 +4454,7 @@
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
- return;
+ return true;
}else {
log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
}
@@ -4581,12 +4469,13 @@
log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3933琛�"+e);
}
+ return false;
}
/**
* 鎵ц灏忚溅鎼繍浠诲姟
*/
- public synchronized void rgvRunWrkMastEmptyStaPutFull() {//婊℃斁
+ public synchronized boolean rgvRunWrkMastEmptyStaPutFull() {//婊℃斁
try{
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4602,9 +4491,11 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
+ && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -4620,6 +4511,10 @@
}
boolean sign = false;
if ( wrkMastSta.getStaEnd()!=0){//婊℃斁
+ BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
+ if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
+ continue;
+ }
sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
}else {
continue;
@@ -4633,7 +4528,7 @@
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
- return;
+ return true;
}else {
log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
}
@@ -4648,9 +4543,10 @@
log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3933琛�"+e);
}
+ return false;
}
- public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙犵洏
+ public synchronized boolean rgvRunWrkMastEmptyStaTake() {//鍙犵洏
try{
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4666,9 +4562,11 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
+ && (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -4684,6 +4582,10 @@
}
boolean sign = false;
if ( wrkMastSta.getStaStart()!=0){//鍙�
+ BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
+ if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
+ continue;
+ }
sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏
}else {
continue;
@@ -4697,7 +4599,7 @@
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
- return;
+ return true;
}else {
log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
}
@@ -4712,9 +4614,10 @@
log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3989琛�"+e);
}
+ return false;
}
- public synchronized void rgvRunWrkMastEmptyStaTakeFull() {//婊″彇
+ public synchronized boolean rgvRunWrkMastEmptyStaTakeFull() {//婊″彇
try{
for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
@@ -4730,9 +4633,11 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded2()==0 //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
+ && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
+ && rgvProtocol.getLoaded2()==0 //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -4747,7 +4652,11 @@
continue;
}
boolean sign = false;
- if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//婊″彇
+ if (wrkMastSta.getStaStart()!=0){//婊″彇
+ BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
+ if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
+ continue;
+ }
sign = rgvTakeEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
}else {
continue;
@@ -4761,7 +4670,7 @@
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
- return;
+ return true;
}else {
log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
}
@@ -4776,6 +4685,7 @@
log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
log.error("3989琛�"+e);
}
+ return false;
}
/*
@@ -4784,6 +4694,13 @@
public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
try{
Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+ if (integer==0){
+ return;
+ }
+ //鏌ヨ鏄惁闇�瑕侀伩璁�
+ //鏈畬鎴�
+ Thread.sleep(1000);
+ integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
if (integer==0){
return;
}
@@ -4805,6 +4722,8 @@
&& rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
&& rgvProtocol.getTaskNo1()==0
&& rgvProtocol.getTaskNo2()==0
+ && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 40f55ce..48c9273 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -26,6 +26,7 @@
private Thread thread;
// 棰戠巼
private int i = 0;
+ private int j = 0;
/**
* =====>> 寮�濮嬪伐浣�
@@ -85,18 +86,28 @@
//瀹屾垚灏忚溅浠诲姟
mainService.rgvCompleteWrkMastSta();
- //鎵ц灏忚溅璐х墿鎼繍浠诲姟
- mainService.rgvRunWrkMastFullSta();
- //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
- mainService.rgvRunWrkMastEmptyStaPut();//鏀�//鎷嗙洏
- mainService.rgvRunWrkMastEmptyStaPutFull();//婊℃斁
- mainService.rgvRunWrkMastEmptyStaTake();//鍙栧彔鐩�
- mainService.rgvRunWrkMastEmptyStaTakeFull();////婊″彇
i++;
- if (i > 3) {
- mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
+ if (i<7) {
+ // RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂
+ try{
+ mainService.rgvIoExecute(i);
+ }catch (Exception e){
+ log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
+ }
+ }else {
i = 0;
}
+
+
+// //鎵ц灏忚溅璐х墿鎼繍浠诲姟
+// mainService.rgvRunWrkMastFullSta();
+// //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
+// mainService.rgvRunWrkMastEmptyStaPut();//鏀�//鎷嗙洏
+// mainService.rgvRunWrkMastEmptyStaPutFull();//婊℃斁
+// mainService.rgvRunWrkMastEmptyStaTake();//鍙栧彔鐩�
+// mainService.rgvRunWrkMastEmptyStaTakeFull();////婊″彇
+// mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
+
/////////////////////////////////////RGV璋冨害/////////////////////////////////////
// 寮傚父淇℃伅璁板綍
@@ -146,7 +157,6 @@
mainService.stackingCompletionDriveTrayOk2();
//閫�璐х爜鍨涘畬鎴愭墭鐩樼户缁笅涓�姝�
mainService.stackingCompletionDriveTrayOk3();
-
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index 63ba1c2..172a5a5 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -94,7 +94,7 @@
/**
* 宸ヤ綅2鏈夌墿
*/
- public Short loaded2; //0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
+ public Short loaded2; //0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
///////////////////////////////////////////////////////////////////////////////////////
/**
--
Gitblit v1.9.1