From 92c572e50893a93a810bbe6adb6d3cdbfc225073 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 20 五月 2025 14:17:33 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 275 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 208 insertions(+), 67 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 55a8c13..15ba433 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -31,6 +31,7 @@
import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -38,6 +39,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -113,17 +115,24 @@
// 鑾峰彇鍏ュ簱绔欎俊鎭�
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
- if (staProtocol == null) {
+ if (staProtocol == null || !staProtocol.isLoading()) {
continue;
} else {
staProtocol = staProtocol.clone();
}
Integer workNo = staProtocol.getWorkNo();
+ if (workNo!=9998){
+ continue;
+ }
Integer stano = staProtocol.getStaNo();
// 灏哄妫�娴嬪紓甯�
boolean back = false;
String errMsg = "";
+ if (staProtocol.getGrossWt()>=600){
+ errMsg = "瓒呴噸";
+ back = true;
+ }
if (staProtocol.isFrontErr()) {
errMsg = "鍓嶈秴闄�";
back = true;
@@ -163,9 +172,10 @@
if (!staProtocol.isPakMk()) {
continue;
}
+ System.out.println("鎵爜鍏ュ簱澶辫触锛寋"+inSta.getStaNo()+"}鍏ュ簱绔欏洜{"+errMsg+"}寮傚父锛屾墭鐩樺凡琚��鍥�");
// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
- staProtocol.setWorkNo(workNo);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setWorkNo(9999);
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
@@ -179,7 +189,7 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
&& staProtocol.isInEnable()
- && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo>9000 && workNo<10000))
+ && workNo == 9998
&& staProtocol.isPakMk()
&& staProtocol.isPakMkWalk()
) {
@@ -204,7 +214,7 @@
return;
} else {
staProtocol.setWorkNo(taskWrk1.getWrkNo());
- staProtocol.setStaNo(staDesc.getCrnStn());
+ staProtocol.setStaNo(staProtocol.getSiteId());
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
}
}
@@ -237,7 +247,7 @@
log.error("鎵爜妫�娴嬬▼搴忓紓甯�" + inSta.getStaNo() + "寮傚父淇℃伅" + e1);
}
staProtocol.setWorkNo(9999);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
continue;
@@ -263,7 +273,7 @@
log.error("鎵爜妫�娴嬬▼搴忓紓甯�,寮傚父淇℃伅" + e);
staProtocol.setWorkNo(9999);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
}
@@ -274,7 +284,7 @@
log.error("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
staProtocol.setWorkNo(9999);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
@@ -304,12 +314,15 @@
// 鑾峰彇鍏ュ簱绔欎俊鎭�
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
- if (staProtocol == null) {
+ if (staProtocol == null || !staProtocol.isLoading()) {
continue;
} else {
staProtocol = staProtocol.clone();
}
Integer workNo = staProtocol.getWorkNo();
+ if (workNo!=9997){
+ continue;
+ }
Integer stano = staProtocol.getStaNo();
// 灏哄妫�娴嬪紓甯�
@@ -350,8 +363,9 @@
if (!staProtocol.isPakMk()) {
continue;
}
+ System.out.println("鎵爜鍏ュ簱澶辫触锛寋"+inSta.getStaNo()+"}鍏ュ簱绔欏洜{"+errMsg+"}寮傚父锛屾墭鐩樺凡琚��鍥�");
// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
- staProtocol.setWorkNo(workNo);
+ staProtocol.setWorkNo(9999);
staProtocol.setStaNo(inSta.getStaNo());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -366,7 +380,7 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
&& staProtocol.isInEnable()
- && staProtocol.isEmptyMk() && (workNo == 0 || (workNo>9000 && workNo<10000))
+ && (workNo == 9997)
&& staProtocol.isPakMk()
&& staProtocol.isPakMkWalk()
) {
@@ -400,7 +414,7 @@
log.error("鎵爜妫�娴嬬▼搴忓紓甯�" + inSta.getStaNo() + "寮傚父淇℃伅" + e1);
}
staProtocol.setWorkNo(9999);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
continue;
@@ -427,7 +441,7 @@
log.error("鎵爜妫�娴嬬▼搴忓紓甯�,寮傚父淇℃伅" + e);
staProtocol.setWorkNo(9999);
- staProtocol.setStaNo(inSta.getStaNo());
+ staProtocol.setStaNo(inSta.getBackSta());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
}
@@ -463,7 +477,7 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
// && staProtocol.isInEnable()
- && (workNo == 0 || (workNo>9000 && workNo<10000))
+// && (workNo == 0 || (workNo>9000 && workNo<10000))
&& staProtocol.isPakMkWalk()
) {
if (inSta.isBarcodeSign()){
@@ -562,20 +576,23 @@
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
public void crnStnToOutStn() {
- for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+ for (CrnSlave crn : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) {
continue;
}
- BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
if (basCrnp == null) {
- log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
continue;
}
- if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
+
+ CrnSlave crnSlave = new CrnSlave(crn);
+
+ if (!crn.getId().equals(crnProtocol.getLaneNo())) {
for (CrnSlave crnOther : slaveProperties.getCrn()) {
if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
crnSlave.updateCrnInStn(crnOther);
@@ -617,7 +634,7 @@
if (offer) {
log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
Date now = new Date();
- taskWrk.setStatus(9);
+ taskWrk.setStatus(TaskStatusType.OVER3.id);
taskWrk.setWrkSts(14);
taskWrk.setModiTime(now);
taskWrk.setCompleteTime(now);
@@ -640,20 +657,22 @@
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
public synchronized void crnIoExecute() throws IOException {
- for (CrnSlave crn : slaveProperties.getCrn()) {
+ for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) {
continue;
}
- BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
if (basCrnp == null) {
- log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
continue;
}
- if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+ CrnSlave crn = new CrnSlave(crnSlave);
+
+ if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
for (CrnSlave crnOther : slaveProperties.getCrn()) {
if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
crn.updateCrnInStn(crnOther);
@@ -795,7 +814,7 @@
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
crnCommand.setCommand((short) 1);
- if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+ if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
} else {
@@ -807,10 +826,13 @@
}
try {
HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo", taskWrk.getTaskNo());
- headParam.put("status", taskWrk.getStatus());
- headParam.put("ioType", taskWrk.getIoTypeWms());
- headParam.put("barcode", taskWrk.getBarcode());
+ headParam.put("taskNo",taskWrk.getTaskNo());
+ headParam.put("taskStatus",taskWrk.getStatusWms());
+ headParam.put("ioType",taskWrk.getIoTypeWms());
+ headParam.put("barCode",taskWrk.getBarcode());
+ headParam.put("reportTime", LocalDateTime.now());
+ headParam.put("weight",taskWrk.getScWeight().doubleValue());
+
String response;
response = new HttpHandler.Builder()
// .setHeaders(headParam)
@@ -907,7 +929,7 @@
command.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
command.setCommand((short) 1);
- if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command))) {
+ if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
} else {
@@ -915,7 +937,7 @@
// 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
Date now = new Date();
taskWrk.setWrkSts(12);
- taskWrk.setStatus(2);
+ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);
taskWrk.setModiTime(now);
taskWrk.setExecuteTime(now);
if (taskWrkMapper.updateById(taskWrk) == 0) {
@@ -927,10 +949,13 @@
}
try {
HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo", taskWrk.getTaskNo());
- headParam.put("status", taskWrk.getStatus());
- headParam.put("ioType", taskWrk.getIoTypeWms());
- headParam.put("barcode", taskWrk.getBarcode());
+ headParam.put("taskNo",taskWrk.getTaskNo());
+ headParam.put("taskStatus",taskWrk.getStatusWms());
+ headParam.put("ioType",taskWrk.getIoTypeWms());
+ headParam.put("barCode",taskWrk.getBarcode());
+ headParam.put("reportTime", LocalDateTime.now());
+ headParam.put("weight",taskWrk.getScWeight().doubleValue());
+
String response;
response = new HttpHandler.Builder()
// .setHeaders(headParam)
@@ -1017,13 +1042,13 @@
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setCommand((short) 1);
- if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+ if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
} else {
// 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
Date now = new Date();
taskWrk.setWrkSts(12);
- taskWrk.setStatus(2);
+ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);
taskWrk.setModiTime(now);
taskWrk.setExecuteTime(now);
if (taskWrkMapper.updateById(taskWrk) == 0) {
@@ -1031,10 +1056,13 @@
}
try {
HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo", taskWrk.getTaskNo());
- headParam.put("status", taskWrk.getStatus());
- headParam.put("ioType", taskWrk.getIoTypeWms());
- headParam.put("barcode", taskWrk.getBarcode());
+ headParam.put("taskNo",taskWrk.getTaskNo());
+ headParam.put("taskStatus",taskWrk.getStatusWms());
+ headParam.put("ioType",taskWrk.getIoTypeWms());
+ headParam.put("barCode",taskWrk.getBarcode());
+ headParam.put("reportTime", LocalDateTime.now());
+ headParam.put("weight",taskWrk.getScWeight().doubleValue());
+
String response;
response = new HttpHandler.Builder()
// .setHeaders(headParam)
@@ -1068,15 +1096,17 @@
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
public void storeFinished() throws InterruptedException {
- for (CrnSlave crn : slaveProperties.getCrn()) {
+ for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) {
continue;
}
- if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+ CrnSlave crn = new CrnSlave(crnSlave);
+
+ if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
for (CrnSlave crnOther : slaveProperties.getCrn()) {
if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
crn.updateCrnInStn(crnOther);
@@ -1102,7 +1132,7 @@
if (!Cools.isEmpty(taskWrk)) {
if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
- taskWrk.setStatus(5);//瀹岀粨
+ taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
locMast.setLocSts("F");//F.鍦ㄥ簱
@@ -1112,7 +1142,7 @@
locMastService.updateById(locMast);
} else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
- taskWrk.setStatus(5);//瀹岀粨
+ taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
locMast.setLocSts("O");//O.绌哄簱浣�
@@ -1122,7 +1152,7 @@
locMastService.updateById(locMast);
} else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
- taskWrk.setStatus(5);//瀹岀粨
+ taskWrk.setStatus(TaskStatusType.OVER.id);//瀹岀粨
//鏇存柊搴撲綅鐘舵��
LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
locMast.setLocSts("F");//F.鍦ㄥ簱
@@ -1145,10 +1175,13 @@
try {
HashMap<String, Object> headParam = new HashMap<>();
- headParam.put("taskNo", taskWrk.getTaskNo());
- headParam.put("status", taskWrk.getStatus());
- headParam.put("ioType", taskWrk.getIoTypeWms());
- headParam.put("barcode", taskWrk.getBarcode());
+ headParam.put("taskNo",taskWrk.getTaskNo());
+ headParam.put("taskStatus",taskWrk.getStatusWms());
+ headParam.put("ioType",taskWrk.getIoTypeWms());
+ headParam.put("barCode",taskWrk.getBarcode());
+ headParam.put("reportTime", LocalDateTime.now());
+ headParam.put("weight",taskWrk.getScWeight().doubleValue());
+
String response;
log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", headParam);
@@ -1372,6 +1405,49 @@
}
return true;
}
+ public boolean rgvOtherIDLEOther(RgvSlave slave) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getOtherId());
+
+ if (rgvProtocol == null || rgvTaskProtocol == null) {
+ return false;
+ }
+ if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1
+ || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
+ return false;
+ }
+
+ if (rgvProtocol.getLoaded()!=0) {
+ return false;
+ }
+ return true;
+ }
+ public boolean rgvOtherIDLE(RgvSlave slave,Integer staNo) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+
+ if (rgvProtocol == null || rgvTaskProtocol == null) {
+ return false;
+ }
+ if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1
+ || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
+ return false;
+ }
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+
+ if (rgvProtocolOther == null) {
+ return true;
+ }
+ if (rgvProtocolOther.statusEnable) {
+ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
+ if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
+ >=
+ Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
+ return false;
+ }
+ }
+ return true;
+ }
public TaskWrk deviceDetection(RgvSlave.RgvStn inSta) {
@@ -1422,7 +1498,7 @@
for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
TaskWrk taskWrk = deviceDetection(inSta);
if (taskWrk != null) {
- if (taskWrk.getTaskNo().equals(taskNoNow)) continue;
+ if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
taskWrkList.add(taskWrk);
staList.add(inSta.getStaNo());
}
@@ -1455,7 +1531,7 @@
if (rgvStn.getStaNo().equals(staNoNow)) {
TaskWrk taskWrk = deviceDetection(rgvStn);
if (taskWrk != null) {
- BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
+ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
sign = taskGenerate(rgvSlave, rgvStn, 0);
}
@@ -1472,12 +1548,47 @@
for (Integer staNoNow : belongToRange) {
for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
if (rgvStn.getStaNo().equals(staNoNow)) {
- sign = taskGenerate(rgvSlave, rgvStn, 0);
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+ if (rgvStnOut.getStaNo().equals(outStaNo)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ break;
+ }
+ }
+ }
break;
}
}
if (sign) {
break;
+ }
+ }
+ }
+ if (!sign && staList.size()==1){
+ if (rgvOtherIDLEOther(rgvSlave)){
+ if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
+ sign=true;
+ }
+ }
+ if (sign){
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+ if (rgvStn.getStaNo().equals(staList.get(0))) {
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+ if (rgvSuper.getStaNo().equals(outStaNo)){
+ sign=false;
+ break;
+ }
+ }
+ } else {
+ return;
+ }
+ break;
+ }
}
}
}
@@ -1488,7 +1599,7 @@
if (rgvStn.getStaNo().equals(staNoNow)) {
TaskWrk taskWrk = deviceDetection(rgvStn);
if (taskWrk != null) {
- BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
+ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
sign = taskGenerate(rgvSlave, rgvStn, 0);
}
@@ -1506,7 +1617,16 @@
for (Integer staNoNow : rangeList) {
for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
if (rgvStn.getStaNo().equals(staNoNow)) {
- sign = taskGenerate(rgvSlave, rgvStn, 0);
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+ if (rgvStnOut.getStaNo().equals(outStaNo)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ break;
+ }
+ }
+ }
break;
}
}
@@ -1522,7 +1642,7 @@
if (rgvStn.getStaNo().equals(staNoNow)) {
TaskWrk taskWrk = deviceDetection(rgvStn);
if (taskWrk != null) {
- BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
+ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
sign = taskGenerate(rgvSlave, rgvStn, 0);
}
@@ -1544,7 +1664,16 @@
for (Integer staNoNow : rangeList) {
for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
if (rgvStn.getStaNo().equals(staNoNow)) {
- sign = taskGenerate(rgvSlave, rgvStn, 0);
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+ if (rgvStnOut.getStaNo().equals(outStaNo)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ break;
+ }
+ }
+ }
break;
}
}
@@ -1612,28 +1741,40 @@
if (targetPointConvert == null) {
return false;
}
- RgvSlave.RgvStn rgvStnEnd = getRgvStnNow(rgvSlave, targetPointConvert);
- if (rgvStnEnd == null) {
- return false;
- }
BasDevpPosition basDevpPositionSou = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", targetPointConvert));
//鎵ц
- issuedTake.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
+ issuedTake.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
issuedTake.setTaskStatus(2);
+ issuedTake.setTargetPositionStaNo(basDevpPositionSou.getDevNo());
+ issuedTake.setTargetPositionStaNoPlcId(basDevpPositionSou.getPlcId());
issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
issuedTake.setTargetPosition(basDevpPositionSou.getPlcPosition());
issuedTake.setIsRunning(1);
- issuedTake.setDirection(rgvStn.isDirection());
+ issuedTake.setDirection(basDevpPositionSou.getRgvSign()==1);
- issuedPut.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
+ issuedPut.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
issuedPut.setTaskStatus(3);
+ issuedPut.setTargetPositionStaNo(basDevpPositionEnd.getDevNo());
+ issuedPut.setTargetPositionStaNoPlcId(basDevpPositionEnd.getPlcId());
issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
issuedPut.setTargetPosition(basDevpPositionEnd.getPlcPosition());
issuedPut.setIsRunning(1);
- issuedPut.setDirection(rgvStnEnd.isDirection());
+ issuedPut.setDirection(basDevpPositionEnd.getRgvSign()==1);
+
+ try{
+ if (taskWrk.getIoType()==2 && basDevpPositionEnd.getRgvSign()==1){
+ Date now = new Date();
+ taskWrk.setStatus(TaskStatusType.OVER.id);
+ taskWrk.setModiTime(now);//鏇存柊鏃堕棿
+ taskWrk.setCompleteTime(now);//瀹岀粨鏃堕棿
+ taskWrkService.updateById(taskWrk);
+ }
+ } catch (Exception e){
+
+ }
} catch (Exception e) {
log.error("浠诲姟鐢熸垚澶辫触issued1===銆嬪紓甯镐俊鎭細{}", e.getMessage());
return false;
--
Gitblit v1.9.1