From 7c75c8b98bb06517bacd809e01ad29ab77b2f2dc Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 14 五月 2025 15:53:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 182 +++++++++++++++++++++++++++++++++-----------
1 files changed, 135 insertions(+), 47 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 3559858..aae0581 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -38,6 +38,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;
@@ -562,20 +563,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);
@@ -640,20 +644,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 +801,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 +813,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 +916,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 {
@@ -927,10 +936,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,7 +1029,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));
} else {
// 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
@@ -1031,10 +1043,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 +1083,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);
@@ -1145,10 +1162,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,7 +1392,24 @@
}
return true;
}
- public boolean rgvOtherIDLE(RgvSlave slave) {
+ 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());
@@ -1384,15 +1421,15 @@
return false;
}
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
- RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
if (rgvProtocolOther == null) {
return true;
}
if (rgvProtocolOther.statusEnable) {
- if (rgvProtocolOther.getModeType().equals(RgvModeType.AUTO)
- && rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)
- && rgvProtocolOther.getLoaded()==0) {
+ 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;
}
}
@@ -1448,7 +1485,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());
}
@@ -1498,7 +1535,16 @@
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;
}
}
@@ -1507,10 +1553,30 @@
}
}
}
-
- if (!sign){
- if (!rgvOtherIDLE(rgvSlave)){
- sign=true;
+ 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;
+ }
+ }
}
}
@@ -1538,7 +1604,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;
}
}
@@ -1576,7 +1651,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;
}
}
@@ -1648,16 +1732,20 @@
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(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);
--
Gitblit v1.9.1