From e3d8bc857d087f2f8bcabc4437b73c66ee329ddc Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 08 十二月 2023 10:32:28 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 446 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 280 insertions(+), 166 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 e9739c2..40ca887 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -27,18 +27,18 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
-import com.zy.core.model.Task;
+import com.zy.core.model.*;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
+import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
+import com.zy.core.thread.ZyRgvThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -66,6 +66,8 @@
private SlaveProperties slaveProperties;
@Autowired
private WrkMastMapper wrkMastMapper;
+ @Autowired
+ private WrkMastService wrkMastService;
@Autowired
private WrkDetlService wrkDetlService;
@Autowired
@@ -104,13 +106,6 @@
}
String barcode = barcodeThread.getBarcode();
- ////鍒ゆ柇101鍜�104鏄惁鏄嫞鏂欍�佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
- WrkMast wrkMast1=wrkMastMapper.selectpj(inSta.getStaNo(),barcode);
- if((inSta.getStaNo().equals(101) || inSta.getStaNo().equals(104)) &&!Cools.isEmpty(barcode)&&!Cools.isEmpty(wrkMast1)){
- log.error("101鎴�104鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱", wrkMast1.getWrkNo());
- continue;
- }
-
if (!Cools.isEmpty(barcode)) {
log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -135,14 +130,6 @@
staProtocol = staProtocol.clone();
}
- // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (inSta.getStaNo() == 101 && devpThread.ioModeOf1F1 == IoModeType.PAKOUT_MODE) {
- continue;
- }
- if (inSta.getStaNo() == 104 && devpThread.ioModeOf1F2 == IoModeType.PAKOUT_MODE) {
- continue;
- }
-
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
@@ -159,13 +146,13 @@
String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
}
- staProtocol.setWorkNo((short)9999);
- staProtocol.setStaNo((short)(staProtocol.getStaNo()-1));
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- if (!result) {
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
+// staProtocol.setWorkNo((short)9999);
+// staProtocol.setStaNo((short)(staProtocol.getStaNo()-1));
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
continue;
}
@@ -214,84 +201,25 @@
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
}
} else if(jsonObject.getInteger("code").equals(700)) {
- staProtocol.setWorkNo((short) 9999);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- // led 寮傚父鏄剧ず
- if (ledThread != null) {
- String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
- }
+// staProtocol.setWorkNo((short) 9999);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// // led 寮傚父鏄剧ず
+// if (ledThread != null) {
+// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+// }
+ log.error(barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒");
} else {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
}
-
-
-// // 妫�绱㈠簱浣�
-// LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-// List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
-// StartupDto startupDto = commonService.getLocNo(1, 1, inSta.getStaNo(), matNos, locTypeDto, 0);
-// // 宸ヤ綔鍙�
-// int workNo = startupDto.getWorkNo();
-// // 鎻掑叆宸ヤ綔鏄庣粏妗�
-// wrkDetlService.createWorkDetail(workNo, waitPakins, barcode);
-//
-// // 鎻掑叆宸ヤ綔涓绘。
-// wrkMast = new WrkMast();
-// wrkMast.setWrkNo(workNo);
-// wrkMast.setIoTime(new Date());
-// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-// wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-// wrkMast.setIoPri(10D); // 浼樺厛绾э細10
-// wrkMast.setCrnNo(startupDto.getCrnNo());
-// wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
-// wrkMast.setStaNo(startupDto.getStaNo());
-// wrkMast.setLocNo(startupDto.getLocNo());
-// wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
-// wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-// wrkMast.setPicking("N"); // 鎷f枡
-// wrkMast.setExitMk("N"); // 閫�鍑�
-// wrkMast.setEmptyMk("N"); // 绌烘澘
-// wrkMast.setLinkMis("N");
-// // 鎿嶄綔浜哄憳鏁版嵁
-// wrkMast.setAppeTime(new Date());
-// wrkMast.setModiTime(new Date());
-// Integer insert = wrkMastMapper.insert(wrkMast);
-// if (insert == 0) {
-// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-// }
-// // 鏇存柊鐩爣搴撲綅鐘舵��
-// LocMast locMast = locMastService.selectById(startupDto.getLocNo());
-// locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-// locMast.setModiTime(new Date());
-// if (!locMastService.updateById(locMast)){
-// throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-// }
-// // 灏嗗叆搴撻�氱煡妗d慨鏀逛负宸插惎鍔�
-// if (wrkMastMapper.updateWaitPakInStep1(barcode) == 0) {
-// throw new CoolException("淇敼鍏ュ簱閫氱煡妗g姸鎬佷负宸插惎鍔ㄥけ璐�");
-// }
-//
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-// barcodeThread.setBarcode("");
-// staProtocol.setWorkNo((short) workNo);
-// staProtocol.setStaNo(startupDto.getStaNo().shortValue());
-// devpThread.setPakMk(staProtocol.getSiteId(), false);
-// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// if (!result) {
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-// }
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
-
}
-
}
}
@@ -555,8 +483,13 @@
continue;
}
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMast.setWrkSts(14L);
+ if (crnStn.getStaNo() == 1016 || crnStn.getStaNo() == 1019) {
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负13.RGV鎼繍涓�
+ wrkMast.setWrkSts(13L);
+ }else {
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14
+ wrkMast.setWrkSts(14L);
+ }
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
@@ -852,14 +785,6 @@
// continue;
} else {
staProtocol = staProtocol.clone();
- }
-
-// // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if (wrkMast.getStaNo() == 100 && devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) {
- continue;
- }
- if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
- continue;
}
// 鏌ヨ绔欑偣璇︾粏淇℃伅
@@ -1364,60 +1289,6 @@
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
-
-
-// // 妫�绱㈠簱浣�
-// LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-// StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null, locTypeDto, 0);
-// // 宸ヤ綔鍙�
-// int workNo = startupDto.getWorkNo();
-//
-// try {
-// // 鎻掑叆宸ヤ綔涓绘。
-// WrkMast wrkMast = new WrkMast();
-// wrkMast.setWrkNo(workNo);
-// wrkMast.setIoTime(new Date());
-// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-// wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-// wrkMast.setIoPri(10D); // 浼樺厛绾э細10
-// wrkMast.setCrnNo(startupDto.getCrnNo());
-// wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
-// wrkMast.setStaNo(startupDto.getStaNo());
-// wrkMast.setLocNo(startupDto.getLocNo());
-// wrkMast.setFullPlt("N"); // 婊℃澘
-// wrkMast.setPicking("N"); // 鎷f枡
-// wrkMast.setExitMk("N"); // 閫�鍑�
-// wrkMast.setEmptyMk("Y"); // 绌烘澘
-// wrkMast.setLinkMis("N");
-//// wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-// // 鎿嶄綔浜哄憳鏁版嵁
-// wrkMast.setAppeTime(new Date());
-// wrkMast.setModiTime(new Date());
-// Integer insert = wrkMastMapper.insert(wrkMast);
-// if (insert == 0) {
-// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-// }
-// // 鏇存柊鐩爣搴撲綅鐘舵��
-// LocMast locMast = locMastService.selectById(startupDto.getLocNo());
-// locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-// locMast.setModiTime(new Date());
-// if (!locMastService.updateById(locMast)){
-// throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
-// }
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-// staProtocol.setWorkNo((short) workNo);
-// staProtocol.setStaNo(startupDto.getStaNo().shortValue());
-// devpThread.setPakMk(staProtocol.getSiteId(), false);
-// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-// if (!result) {
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-// }
-// } catch (Exception e) {
-// e.printStackTrace();
-// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-// }
}
@@ -2084,16 +1955,259 @@
}
- public synchronized void outOfDevp() {
- List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
- for (WrkMast wrkMast : wrkMasts) {
- if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
- wrkMast.setCtnNo("Y");
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+ //RGV鎼繍
+ public synchronized void rgvIoExecute() {
+ for (RgvSlave slave : slaveProperties.getRgv()) {
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId());
+ if (rgvThread == null) {
+ return;
+ }
+
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+
+ // 鍒ゆ柇RGV鏄惁绌洪棽
+ if (rgvProtocol.getModeType() == RgvModeType.COMPUTER
+ && rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡锛屽垯浼樺厛鎵弿鍑哄簱绔欑偣
+ if (rgvProtocol.getLastIo().equals("I")) {
+ this.rgvOutExecute(rgvThread, rgvProtocol);//鍑哄簱
+ rgvProtocol.setLastIo("O");
+ }else {
+ this.rgvInExecute(rgvThread, rgvProtocol);//鍏ュ簱
+ rgvProtocol.setLastIo("I");
+ }
+
+ //妫�鏌ユ槸鍚﹀瓨鍦ㄥ伐浣�1浠诲姟瓒呮椂娌′笅鍙�
+ if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0) {
+ if (System.currentTimeMillis() - rgvProtocol.getTask1SendTime() > (1000*60)) {
+ //宸ヤ綅1涓嬪彂鏃堕棿瓒呰繃60s
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setCommand((short) 1);//宸ヤ綅1纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(4, rgvCommand))) {
+ log.error("RGV纭鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ return;
+ }
+ log.error("RGV纭鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+ }
+ }
+ }
+
+ //rgv鍏ュ簱
+ public synchronized void rgvInExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) {
+ for (RgvSlave.Sta sta : rgvThread.getSlave().getInStn()) {
+ if (rgvProtocol.getTaskNo1() > 0) {
+ //妫�娴媟gv宸ヤ綅1鏄惁涓哄叆搴撲换鍔�
+ WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast1.getWrkSts() > 100) {
+ continue;//鍑哄簱浠诲姟璺宠繃
}
}
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo());
+ //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍏ャ�佹湁宸ヤ綔鍙�
+ if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) {
+ continue;
+ }
+
+ //鎼滅储宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;//宸ヤ綔妗d笉瀛樺湪
+ }
+
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), true);
+ if (staNo == null) {
+ continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦�
+ }
+
+ //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍏ャ�佹棤鐗┿�佹棤宸ヤ綔鍙�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (!(staProtocol1.isAutoing() && staProtocol1.isInEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) {
+ continue;
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setAckFinish((short) 0);
+
+ //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤
+ if (rgvProtocol.getTaskNo1() == 0) {
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭
+ } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤
+ rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 1);//宸ヤ綅2纭
+ }else {
+ continue;//娌℃湁鍙敤RGV宸ヤ綅
+ }
+
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) {
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ continue;
+ }
+
+ log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+
+ //rgv鍑哄簱
+ public synchronized void rgvOutExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) {
+ for (RgvSlave.Sta sta : rgvThread.getSlave().getOutStn()) {
+ if (rgvProtocol.getTaskNo1() > 0) {
+ //妫�娴媟gv宸ヤ綅1鏄惁涓哄嚭搴撲换鍔�
+ WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast1.getWrkSts() < 100) {
+ continue;//鍏ュ簱浠诲姟璺宠繃
+ }
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo());
+ //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍑恒�佹湁宸ヤ綔鍙�
+ if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) {
+ continue;
+ }
+
+ //鎼滅储宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;//宸ヤ綔妗d笉瀛樺湪
+ }
+
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), false);
+ if (staNo == null) {
+ continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦�
+ }
+
+ //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍑恒�佹棤鐗┿�佹棤宸ヤ綔鍙�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (!(staProtocol1.isAutoing() && staProtocol1.isOutEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) {
+ continue;
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setAckFinish((short) 0);
+
+ //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤
+ if (rgvProtocol.getTaskNo1() == 0) {
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭
+ } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤
+ rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 1);//宸ヤ綅2纭
+ }else {
+ continue;//娌℃湁鍙敤RGV宸ヤ綅
+ }
+
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) {
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ continue;
+ }
+
+ log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+
+ //RGV宸ヤ綔瀹屾垚
+ public synchronized void rgvFinished() {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ for (RgvSlave slave : slaveProperties.getRgv()) {
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId());
+ if (rgvThread == null) {
+ return;
+ }
+
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+
+ // 鐘舵�侊細绛夊緟纭
+ if (rgvProtocol.getStatusType() == RgvStatusType.WAITING) {
+ if (rgvProtocol.getTaskNo1() == 9999) {
+ // RGV澶嶄綅
+ rgvThread.setResetFlag1(true);
+ }else {
+ // 鑾峰彇寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast == null) {
+ log.error("RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+ continue;
+ }
+
+ if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskFinish1() == 1) {
+ //宸ヤ綅1浠诲姟瀹屾垚
+ // RGV澶嶄綅
+ rgvThread.setResetFlag1(true);
+
+ //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁
+ Short destinationPos1 = rgvProtocol.getDestinationPos1();//鑾峰彇宸ヤ綅1鐩爣绔�
+ StaProtocol staProtocol = devpThread.getStation().get(destinationPos1.intValue()).clone();
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙�
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔�
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol));
+ }
+
+ //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵��
+ if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) {
+ if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴�
+ wrkMast.setWrkSts(14L);
+ wrkMast.setModiTime(new Date());
+ wrkMastMapper.updateById(wrkMast);
+ }
+ }
+ }
+
+ if (rgvProtocol.getTaskNo2() > 0 && rgvProtocol.getTaskFinish2() == 1) {
+ //宸ヤ綅2浠诲姟瀹屾垚
+ // RGV澶嶄綅
+ rgvThread.setResetFlag2(true);
+
+ //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁
+ Short destinationPos2 = rgvProtocol.getDestinationPos2();//鑾峰彇宸ヤ綅2鐩爣绔�
+ StaProtocol staProtocol = devpThread.getStation().get(destinationPos2.intValue()).clone();
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙�
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔�
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol));
+ }
+
+ //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵��
+ if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) {
+ if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴�
+ wrkMast.setWrkSts(14L);
+ wrkMast.setModiTime(new Date());
+ wrkMastMapper.updateById(wrkMast);
+ }
+ }
+ }
+ }
+ }
}
}
--
Gitblit v1.9.1