From 8037aaf2ea84786f7d2442d10b17743d6c27c89a Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 24 十一月 2025 15:30:28 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,137 insertions(+), 7 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 e646968..271ee70 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -9,9 +9,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
-import com.zy.asrs.utils.RouteUtils;
-import com.zy.asrs.utils.Utils;
-import com.zy.asrs.utils.VersionUtils;
+import com.zy.asrs.utils.*;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MatDto;
import com.zy.common.model.SearchLocParam;
@@ -22,17 +20,16 @@
import com.zy.common.utils.News;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.SlaveConnection;
+import com.zy.core.cache.*;
import com.zy.core.enums.*;
import com.zy.core.model.*;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.model.protocol.*;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
+import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.system.entity.license.LicenseVerify;
import lombok.extern.slf4j.Slf4j;
@@ -43,6 +40,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
@@ -80,6 +78,8 @@
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private WrkMastService wrkMastService;
+ @Autowired
+ private BasDevpPositionService basDevpPositionService;
@Value("${wms.url}")
private String wmsUrl;
@@ -2518,4 +2518,1134 @@
}
}
+
+//
+// public synchronized void taskStart() {
+// for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+// try {
+// if (rgvDetection(rgvSlave)) {
+// String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+// List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position", true));
+// boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+// if (basDevpPositions.isEmpty()) {
+// log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚锛氳幏鍙栨墍鏈夌珯鐐逛俊鎭紓甯�");
+// } catch (Exception e2){
+// }
+// continue;
+// }
+// List<WrkMast> wrkMastList = new ArrayList<>();
+// List<Integer> staList = new ArrayList<>();
+// for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
+// TaskWrk taskWrk = deviceDetection(inSta);
+// if (taskWrk != null) {
+// if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
+// wrkMastList.add(taskWrk);
+// staList.add(inSta.getStaNo());
+// }
+// }
+//
+// if (wrkMastList.isEmpty() || staList.isEmpty()) continue;
+//
+// boolean sign = false;
+//
+// if (rgvOtherStatusEnable(rgvSlave)) {
+// //鍒嗘垚涓婁笅涓ら儴鍒嗕换鍔�
+// List<Integer>[] avoidRange = RouteUtils.gradeRange(staList, basDevpPositions, itSmall);
+// List<Integer> rangeListSou = avoidRange[itSmall ? 0 : 1];
+// List<Integer> rangeListSouOther = avoidRange[itSmall ? 1 : 0];
+// //灏辫繎鎺掑簭
+// RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+// List<Integer> rangeList = RouteUtils.SortNearby(rangeListSou, rgvProtocol.RgvPos, basDevpPositions);
+// List<Integer> rangeListOther = RouteUtils.SortNearby(rangeListSouOther, rgvProtocol.RgvPos, basDevpPositions);
+//
+// //鎵�灞為儴鍒嗗氨杩涘彇璐�
+//
+// //绛涢�夎寖鍥村唴浠诲姟
+// //灏辫繎鎺掑簭
+// //绛涢�夊湪鑼冨洿浠诲姟
+// Long[][] avoidedRange = new TrackRangeUtils().avoidRangeArr(rgvSlave, trackEntireLength, trackBenchmark, avoidDistance);
+// List<Integer> belongToRange = RouteUtils.SortNearby(RouteUtils.belongToRange(rangeList, avoidedRange[0], basDevpPositions), rgvProtocol.RgvPos, basDevpPositions);
+//
+// if (!sign && staList.size()==1){
+// if (rgvOtherIDLEOther(rgvSlave)){
+// if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
+// System.out.println("绌洪棽灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"绌洪棽灏辫繎璺宠繃");
+//
+// sign=true;
+// }
+// }
+// if (sign){
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staList.get(0))) {
+// WrkMast wrkMast = deviceDetection(rgvStn);
+// if (wrkMast != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(wrkMast.getStaNo().toString());//绔欑偣杞崲 闇�瑕佷慨鏀�
+// for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+// if (rgvSuper.getStaNo().equals(outStaNo)){
+// System.out.println("绌洪棽灏辫繎璺宠繃鍚庡洜鏈�杩滃啀娆℃墽琛�==="+rgvSlave.getId()+"===");
+//
+// sign=false;
+// break;
+// }
+// }
+// } else {
+// return;
+// }
+// break;
+// }
+// }
+// }
+// }
+//
+// if(!sign){
+// for (Integer staNoNow : belongToRange) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// WrkMast wrkMast = deviceDetection(rgvStn);
+// if (wrkMast != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(wrkMast.getStaNo().toString())));//绔欑偣杞崲 闇�瑕佷慨鏀�
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("鍏ㄨ寖鍥存墽琛�==="+rgvSlave.getId()+"==="+wrkMast);
+// System.out.println("鍏ㄨ寖鍥存墽琛�==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// if (!sign) {
+// // 绛涢�夎寖鍥村唴鍙栬揣浠诲姟
+// for (Integer staNoNow : belongToRange) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+// if (rgvStnOut.getStaNo().equals(outStaNo)) {
+// System.out.println("绛涢�夎寖鍥村唴鍙栬揣浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夎寖鍥村唴鍙栬揣浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// break;
+// }
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+//
+// if (!sign && staList.size()==1){
+// if (rgvOtherIDLEOther2(rgvSlave)){
+// if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
+// System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),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)){
+// System.out.println("杩愯灏辫繎璺宠繃鍚庡洜鏈�杩滃啀娆℃墽琛�==="+rgvSlave.getId()+"===");
+//
+// sign=false;
+// break;
+// }
+// }
+// } else {
+// return;
+// }
+// break;
+// }
+// }
+// }
+// }
+//
+//
+//
+// if (!sign && staList.size()>1) {
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }else if (!sign && staList.size()==1){
+// BasDevpPosition basDevpPosition1 = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staList.get(0)));
+// if (Math.abs(basDevpPosition1.getPlcPosition()- rgvProtocol.getRgvPos())<rgvProtocol.getCarBodyJiaoMing()+rgvProtocol.getCarBodyKunPeng() + avoidDistance*2){
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// }
+//
+//
+//
+// if (!sign && staList.size()>1) {
+// // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+// if (rgvStnOut.getStaNo().equals(outStaNo)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村彇璐т换鍔�==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村彇璐т换鍔�==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// break;
+// }
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// if (!sign && staList.size()>1) {
+// for (Integer staNoNow : rangeListOther) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+// if (rgvSuper.getStaNo().equals(outStaNo)){
+// System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+// 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);
+// }
+// break;
+// }
+// }
+// }
+// break;
+// }
+// if (sign) {
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+//
+// }else if (!sign && staList.size()==1){
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+// if (rgvSuper.getStaNo().equals(outStaNo)){
+// System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+// 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);
+// }
+// break;
+// }
+// }
+// }
+// break;
+// }
+// if (sign) {
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+//
+// }
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),"鏈煡璇㈠埌鍙墽琛屼换鍔�");
+//
+// } else {
+// //鍙敤鍖哄煙灏辫繎鍙栬揣
+// //灏辫繎鎺掑簭
+// RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+// List<Integer> rangeList = RouteUtils.SortNearby(staList, rgvProtocol.RgvPos, basDevpPositions);
+// // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// 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;
+// }
+// }
+// }
+// }
+// } catch (Exception e) {
+// log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}", e.getMessage());
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚澶辫触");
+// } catch (Exception e2){
+// }
+// }
+// }
+// }
+//
+// public String rgvOtherTaskWrk(RgvSlave slave) {
+//
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+// TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+// ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+// if (!allTaskProtocol.isEmpty()) {
+// for (TaskProtocol taskProtocol : allTaskProtocol.values()) {
+// if (taskProtocol.getTaskNo() != 0) {
+// return taskProtocol.getTaskNo().toString();
+// }
+// }
+// }
+// return "鏃�";
+//
+// }
+//
+// public boolean rgvDetection(RgvSlave slave) {
+// 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) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
+// return false;
+// }
+// if (rgvProtocol.getLoaded()==1){
+// return false;
+// }
+// RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+// RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+//
+// if (rgvProtocolOther == null) {
+// return false;
+// }
+// if (rgvProtocolOther.statusEnable) {
+// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
+// return false;
+// }
+// }
+// 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) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
+// return false;
+// }
+//
+// if (rgvProtocol.getLoaded()!=0) {
+// return false;
+// }
+// return true;
+// }
+// public boolean rgvOtherIDLEOther2(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) {
+// 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) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !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));
+// long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+// -
+// Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+// if (abs<100){
+// return true;
+// }
+// if (Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+// >=
+// Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos())){
+// return false;
+// }
+// }
+// return true;
+// }
+// public boolean rgvOtherIDLE2(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) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !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));
+// long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+// -
+// Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+// if (abs<100){
+// return true;
+// }
+// if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
+// >=
+// Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
+// return false;
+// }
+// }
+// return true;
+// }
+//
+// public TaskWrk deviceDetection(RgvSlave.RgvStn inSta) {
+//
+// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+// StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+// if (staProtocol == null) {
+// return null;
+// }
+// // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+// if (!staProtocol.isPakMkTask()) {
+// devpThread.setErrorDev(staProtocol.getSiteId(), "浠诲姟宸蹭笅鍙戠瓑寰呭皬杞﹀彇");
+// return null;
+// }
+// // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+// if (staProtocol.isAutoing()
+//// && staProtocol.isLoading()
+//// && staProtocol.isStaOk()
+// && staProtocol.getWorkNo() != 0) {
+// TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
+// if (taskWrk != null) {
+// Integer stano = staProtocol.getStaNo();
+// if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
+// if (!staProtocol.isPakMkRun()) {
+// devpThread.setErrorDev(staProtocol.getSiteId(), "寮傚父鍥為��鏍囪锛岄渶瑕佸洖閫�");
+// return null;
+// }
+// if (!staProtocol.isLoading()) {
+// devpThread.setErrorDev(staProtocol.getSiteId(), "鏃犵墿");
+// return null;
+// }
+// if (!staProtocol.isInEnable()) {
+// devpThread.setErrorDev(staProtocol.getSiteId(), "绛夊緟鍙叆淇″彿");
+// return null;
+// }
+// if (!staProtocol.isStaOk()) {
+// devpThread.setErrorDev(staProtocol.getSiteId(), "绛夊緟閾炬潯灏辩华");
+// return null;
+// }
+// // 灏哄妫�娴嬪紓甯�
+// boolean back = false;
+// String errMsg = "-";
+// if (staProtocol.getGrossWt()>=600){
+// errMsg = "瓒呴噸锛�"+staProtocol.getGrossWt()+"kg";
+// back = true;
+// }
+// if (staProtocol.isFrontErr()) {
+// if (!back){
+// errMsg = "鍓嶈秴闄�";
+// } else {
+// errMsg = errMsg+"---"+"鍓嶈秴闄�";
+// }
+// back = true;
+// }
+// if (staProtocol.isBackErr()) {
+// if (!back){
+// errMsg = "鍚庤秴闄�";
+// } else {
+// errMsg = errMsg+"---"+"鍚庤秴闄�";
+// }
+// back = true;
+// }
+// if (staProtocol.isHighErr()) {
+// if (!back){
+// errMsg = "楂樿秴闄�";
+// } else {
+// errMsg = errMsg+"---"+"楂樿秴闄�";
+// }
+// back = true;
+// }
+// if (staProtocol.isLeftErr()) {
+// if (!back){
+// errMsg = "宸﹁秴闄�";
+// } else {
+// errMsg = errMsg+"---"+"宸﹁秴闄�";
+// }
+// back = true;
+// }
+// if (staProtocol.isRightErr()) {
+// if (!back){
+// errMsg = "鍙宠秴闄�";
+// } else {
+// errMsg = errMsg+"---"+"鍙宠秴闄�";
+// }
+// back = true;
+// }
+//// if (!back && staProtocol.isWeightErr()) {
+//// errMsg = "瓒呴噸";
+//// back = true;
+//// }
+// if (staProtocol.isBarcodeErr()) {
+// if (!back){
+// errMsg = "鎵爜澶辫触";
+// } else {
+// errMsg = errMsg+"---"+"鎵爜澶辫触";
+// }
+// back = true;
+// }
+// // 閫�鍥�
+// if (back) {
+// if (stano.equals(staProtocol.getStaNo() + 1)) {
+// return null;
+// }
+// if (!staProtocol.isPakMk()) {
+// return null;
+// }
+// System.out.println("鎵爜鍏ュ簱澶辫触锛寋"+inSta.getStaNo()+"}鍏ュ簱绔欏洜{"+errMsg+"}寮傚父锛屾墭鐩樺凡琚��鍥�");
+//// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+// staProtocol.setWorkNo(9999);
+// staProtocol.setStaNo(staProtocol.getStaNo()+1);
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// devpThread.setPakMkRun(staProtocol.getSiteId(), false);
+// devpThread.setPakMkTask(staProtocol.getSiteId(), false);
+// devpThread.setErrorDev(staProtocol.getSiteId(), errMsg);
+// MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+// try{
+// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず
+// taskWrk.setModiTime(new Date());
+// taskWrkMapper.updateById(taskWrk);
+// } catch (Exception e){
+// devpThread.setErrorDev(staProtocol.getSiteId(), errMsg+"寮傚父淇℃伅淇濆瓨宸ヤ綔妗f澶辫触锛�");
+// }
+// return null;
+// }
+// }
+// return taskWrk;
+// }
+// } else if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && !staProtocol.isLoading()){
+// if (inSta.isDirectionOther()){
+// StaProtocol staProtocolOther = devpThread.getStation().get(inSta.getStaNoOther());
+// if (staProtocolOther == null) {
+// return null;
+// }
+// // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+// if (staProtocolOther.isAutoing()
+// && staProtocolOther.getWorkNo() != 0) {
+// TaskWrk taskWrkOther = taskWrkService.selectByWrkNo(staProtocolOther.getWorkNo());
+// if (taskWrkOther != null) {
+// return taskWrkOther;
+// }
+// }
+// }
+// }
+// return null;
+// }
+// public boolean deviceDetection(RgvSlave.RgvStn inSta,Integer rgvNo) {
+// ArrayList<Integer> arrayList = new ArrayList<Integer>() {{
+// add(1009);
+// add(1011);
+// add(1012);
+// add(1014);
+// add(1016);
+// }};
+// try{
+//
+// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+// ArrayList<Integer> listW = new ArrayList<Integer>();
+// ArrayList<Integer> listL = new ArrayList<Integer>();
+// for (Integer staNo : arrayList){
+// StaProtocol staProtocol = devpThread.getStation().get(staNo);
+// if (staProtocol == null) {
+// RgvErrCache.updateRgvErr(rgvNo,staNo+"绔欑偣鏁版嵁涓㈠け");
+// return false;
+// }
+// // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+// if (staProtocol.getWorkNo() != 0) {
+// if (!listW.contains(staProtocol.getWorkNo())) {
+// listW.add(staProtocol.getWorkNo());
+// }
+// }
+// // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+// if (staProtocol.isLoading()) {
+// if (!listL.contains(staProtocol.getStaNo())) {
+// listL.add(staProtocol.getStaNo());
+// }
+// }
+// }
+// if (listW.size()>=3){
+// RgvErrCache.updateRgvErr(rgvNo,"绛夊緟1012鎷i�夛紝闃叉鍫靛");
+// return false;
+// }
+// if (listL.size()>=3){
+// RgvErrCache.updateRgvErr(rgvNo,"绛夊緟1012鎷i�夛紝闃叉鍫靛");
+// return false;
+// }
+// } catch (Exception e){
+// RgvErrCache.updateRgvErr(rgvNo,"1012妫�娴嬪紓甯革細"+e.getMessage());
+// return false;
+// }
+// return true;
+// }
+//
+// public boolean rgvOtherStatusEnable(RgvSlave slave) {
+// RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+// if (rgvProtocolOther == null) {
+// return true;
+// }
+// if (rgvProtocolOther.statusEnable) {
+//// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
+// return true;
+//// }
+// }
+// return false;
+// }
+//
+// public synchronized void taskStart() {
+// for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+// try {
+// if (rgvDetection(rgvSlave)) {
+// String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+// List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
+// boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+// if (basDevpPositions.isEmpty()) {
+// log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚锛氳幏鍙栨墍鏈夌珯鐐逛俊鎭紓甯�");
+// } catch (Exception e2){
+// }
+// continue;
+// }
+// List<TaskWrk> taskWrkList = new ArrayList<>();
+// List<Integer> staList = new ArrayList<>();
+// for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
+// TaskWrk taskWrk = deviceDetection(inSta);
+// if (taskWrk != null) {
+// if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
+// taskWrkList.add(taskWrk);
+// staList.add(inSta.getStaNo());
+// }
+// }
+//
+// if (taskWrkList.isEmpty() || staList.isEmpty()) continue;
+//
+// boolean sign = false;
+//
+// if (rgvOtherStatusEnable(rgvSlave)) {
+// //鍒嗘垚涓婁笅涓ら儴鍒嗕换鍔�
+// List<Integer>[] avoidRange = RouteUtils.gradeRange(staList, basDevpPositions, itSmall);
+// List<Integer> rangeListSou = avoidRange[itSmall ? 0 : 1];
+// List<Integer> rangeListSouOther = avoidRange[itSmall ? 1 : 0];
+// //灏辫繎鎺掑簭
+// RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+// List<Integer> rangeList = RouteUtils.SortNearby(rangeListSou, rgvProtocol.RgvPos, basDevpPositions);
+// List<Integer> rangeListOther = RouteUtils.SortNearby(rangeListSouOther, rgvProtocol.RgvPos, basDevpPositions);
+//
+// //鎵�灞為儴鍒嗗氨杩涘彇璐�
+//
+// //绛涢�夎寖鍥村唴浠诲姟
+// //灏辫繎鎺掑簭
+// //绛涢�夊湪鑼冨洿浠诲姟
+// Long[][] avoidedRange = new TrackRangeUtils().avoidRangeArr(rgvSlave, trackEntireLength, trackBenchmark, avoidDistance);
+// List<Integer> belongToRange = RouteUtils.SortNearby(RouteUtils.belongToRange(rangeList, avoidedRange[0], basDevpPositions), rgvProtocol.RgvPos, basDevpPositions);
+//
+// if (!sign && staList.size()==1){
+// if (rgvOtherIDLEOther(rgvSlave)){
+// if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
+// System.out.println("绌洪棽灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),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)){
+// System.out.println("绌洪棽灏辫繎璺宠繃鍚庡洜鏈�杩滃啀娆℃墽琛�==="+rgvSlave.getId()+"===");
+//
+// sign=false;
+// break;
+// }
+// }
+// } else {
+// return;
+// }
+// break;
+// }
+// }
+// }
+// }
+//
+// if(!sign){
+// for (Integer staNoNow : belongToRange) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("鍏ㄨ寖鍥存墽琛�==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("鍏ㄨ寖鍥存墽琛�==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// if (!sign) {
+// // 绛涢�夎寖鍥村唴鍙栬揣浠诲姟
+// for (Integer staNoNow : belongToRange) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+// if (rgvStnOut.getStaNo().equals(outStaNo)) {
+// System.out.println("绛涢�夎寖鍥村唴鍙栬揣浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夎寖鍥村唴鍙栬揣浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// break;
+// }
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+//
+// if (!sign && staList.size()==1){
+// if (rgvOtherIDLEOther2(rgvSlave)){
+// if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
+// System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),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)){
+// System.out.println("杩愯灏辫繎璺宠繃鍚庡洜鏈�杩滃啀娆℃墽琛�==="+rgvSlave.getId()+"===");
+//
+// sign=false;
+// break;
+// }
+// }
+// } else {
+// return;
+// }
+// break;
+// }
+// }
+// }
+// }
+//
+//
+//
+// if (!sign && staList.size()>1) {
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }else if (!sign && staList.size()==1){
+// BasDevpPosition basDevpPosition1 = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staList.get(0)));
+// if (Math.abs(basDevpPosition1.getPlcPosition()- rgvProtocol.getRgvPos())<rgvProtocol.getCarBodyJiaoMing()+rgvProtocol.getCarBodyKunPeng() + avoidDistance*2){
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+// if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村唴浠诲姟==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// }
+//
+//
+//
+// if (!sign && staList.size()>1) {
+// // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+// if (rgvStnOut.getStaNo().equals(outStaNo)) {
+// System.out.println("绛涢�夊崐杈硅寖鍥村彇璐т换鍔�==="+rgvSlave.getId()+"==="+taskWrk);
+// System.out.println("绛涢�夊崐杈硅寖鍥村彇璐т换鍔�==="+rgvSlave.getId()+"==="+JSON.toJSONString(belongToRange));
+//
+// sign = taskGenerate(rgvSlave, rgvStn, 0);
+// break;
+// }
+// }
+// }
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+// }
+// if (!sign && staList.size()>1) {
+// for (Integer staNoNow : rangeListOther) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+// if (rgvSuper.getStaNo().equals(outStaNo)){
+// System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+// 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);
+// }
+// break;
+// }
+// }
+// }
+// break;
+// }
+// if (sign) {
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+//
+// }else if (!sign && staList.size()==1){
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk != null) {
+// Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+// if (rgvSuper.getStaNo().equals(outStaNo)){
+// System.out.println("鍥犳渶杩滄墽琛屽崐杈瑰尯鍩熷唴鏀捐揣浠诲姟==="+rgvSlave.getId()+"===");
+// 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);
+// }
+// break;
+// }
+// }
+// }
+// break;
+// }
+// if (sign) {
+// break;
+// }
+// }
+// if (sign) {
+// break;
+// }
+// }
+//
+// }
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),"鏈煡璇㈠埌鍙墽琛屼换鍔�");
+//
+// } else {
+// //鍙敤鍖哄煙灏辫繎鍙栬揣
+// //灏辫繎鎺掑簭
+// RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+// List<Integer> rangeList = RouteUtils.SortNearby(staList, rgvProtocol.RgvPos, basDevpPositions);
+// // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+// for (Integer staNoNow : rangeList) {
+// for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+// if (rgvStn.getStaNo().equals(staNoNow)) {
+// 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;
+// }
+// }
+// }
+// }
+// } catch (Exception e) {
+// log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}", e.getMessage());
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚澶辫触");
+// } catch (Exception e2){
+// }
+// }
+// }
+// }
+//
+//
+// public boolean taskGenerate(RgvSlave rgvSlave, RgvSlave.RgvStn rgvStn, Integer sign) {
+// try {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+// TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+//
+// TaskProtocol issuedTake = new TaskProtocol();
+// TaskProtocol issuedPut = new TaskProtocol();
+// try {
+// ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+// if (allTaskProtocol.size() > 0) {
+// return false;
+// }
+// TaskWrk taskWrk = deviceDetection(rgvStn);
+// if (taskWrk == null) {
+// return false;
+// }
+//// Integer targetPointConvert = taskWrk.getTargetPointConvert();
+// Integer targetPointConvert = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+// if (targetPointConvert == null) {
+// return false;
+// }
+// if (targetPointConvert == 1009){
+// if (!deviceDetection(rgvStn, rgvSlave.getId())){
+// return false;
+// }
+// }
+// try{
+// devpThread.setPakMkTask(rgvStn.getStaNo(), false);
+// } catch (Exception e2){
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"灏忚溅浠诲姟涓嬪彂鏍囪鏇存柊澶辫触");
+// }
+//
+//
+// 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.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.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(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());
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"绔欑偣浠诲姟鐢熸垚澶辫触issued1");
+//
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "浠诲姟鐢熸垚澶辫触issued1");
+// } catch (Exception e2){
+// }
+// return false;
+// }
+//
+// switch (sign) {
+// case 1:
+// taskProtocolCache.updateTaskProtocol(issuedTake);
+// break;
+// case 2:
+// taskProtocolCache.updateTaskProtocol(issuedPut);
+// break;
+// default:
+// taskProtocolCache.updateTaskProtocol(issuedTake);
+// taskProtocolCache.updateTaskProtocol(issuedPut);
+// break;
+// }
+// } catch (Exception e) {
+// log.error("浠诲姟鐢熸垚澶辫触issued2===銆嬪紓甯镐俊鎭細{}", e.getMessage());
+// RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"绔欑偣浠诲姟鐢熸垚澶辫触issued2");
+//
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "绔欑偣浠诲姟鐢熸垚澶辫触issued2");
+// } catch (Exception e2){
+// }
+// }
+// return true;
+// }
}
--
Gitblit v1.9.1