From 1f62eee8e144988e42f3d0ba2e926d056c01f929 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期三, 28 六月 2023 10:26:45 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 100 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 99 insertions(+), 1 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 44c8d87..a0aefbe 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -188,7 +188,13 @@
barcodeThread.setBarcode("");
staProtocol.setWorkNo(dto.getWorkNo().shortValue());
- staProtocol.setStaNo(dto.getStaNo().shortValue());
+
+ if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
+ staProtocol.setStaNo(dto.getStaNo().shortValue());
+ } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
+ staProtocol.setStaNo(dto.getRgvSstaNo().shortValue());
+ }
+
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
@@ -506,6 +512,95 @@
}
}
+ /**
+ * 缁戝畾灏忚溅鏂规硶
+ */
+ public synchronized void rgvBindSte() {
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+ && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+ ) {
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+ if (rgvProtocol.getLastIo().equals("I")) {
+ if (basRgv.getInEnable().equals("Y")) {
+ this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("Y")) {
+ this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("Y")) {
+ this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("Y")) {
+ this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅鍏ュ簱鏂规硶
+ */
+ public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
+ for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
+ Integer staNo = rgvStn.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+ if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+ continue;
+ }else {
+ WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
+ if (!Cools.isEmpty(wrkMast)){
+ wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
+ wrkMast.setAppeTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅鍑哄簱鏂规硶
+ */
+ public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
+ for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
+ BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+ if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+ continue;
+ }else {
+ WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
+ if (!Cools.isEmpty(wrkMast)){
+ wrkMast.setRgvNo(rgvStn.getStaNo());
+ wrkMast.setAppeTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }
/**
* 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
*/
@@ -1237,6 +1332,9 @@
* 鍏ュ簱 ===>> RGV鍏ュ簱绔欏埌绔�
*/
public synchronized void rgvInStn(RgvSlave slave, RgvProtocol rgvProtocol) {
+ WrkMast wrkMast = wrkMastMapper.selectRgvInSteNo(slave.getId());
+
+
//鏌ユ壘宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級,涓擱GV鍏ュ簱鎺ラ┏绔欑鍚堢殑鐨勫叆搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
List<WrkMast> wrkMastTask = getRgvInTask(slave);
if(wrkMastTask.size() <= 0){
--
Gitblit v1.9.1