From 6b37fd7b4ce28fb79aab4e5b851acf7f2097a8de Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期五, 23 一月 2026 13:42:37 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 297 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 245 insertions(+), 52 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 681e8b6..6aafecc 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -116,7 +116,6 @@
@Autowired
private BasPlcerrorLogServiceImpl basPlcerrorLogService;
public Long currentTimeMilliConnectCrnAuto= 0L;
- public boolean[] signIntOut= new boolean[]{false,false,false,false,false};
public void generateStoreWrkFile() {
try {
@@ -704,12 +703,16 @@
} else {
staProtocol = staProtocol.clone();
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ if (!staProtocol.isAutoing() || !staProtocol.isLoading()) {
+ continue;
+ }
+ TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
+ if (taskWrk == null) {
+ log.info("鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯锛氭湭鏌ヨ鍒扮姸鎬佷负13鐨勪换鍔′俊鎭紝绔欑偣鍙�:" + staDesc.getStnNo().toString());
+ continue;
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0 || staProtocol.getWorkNo().equals(taskWrk.getWrkNo()))) {
// 鏌ヨ宸ヤ綔妗�
- TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
- if (taskWrk == null) {
- continue;
- }
log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
// R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
staProtocol.setWorkNo(taskWrk.getWrkNo());
@@ -1762,7 +1765,7 @@
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
if (!allTaskProtocol.isEmpty()) {
for (TaskProtocol taskProtocol : allTaskProtocol.values()) {
- if (taskProtocol.getTaskNo() != 0) {
+ if (taskProtocol.getTaskNo() != 0 && taskProtocol.getTaskNo()!=32222L) {
return taskProtocol.getTaskNo().toString();
}
}
@@ -2041,6 +2044,16 @@
}
return null;
}
+ public TaskWrk deviceDetectionGetWrkNo(RgvSlave.RgvStn inSta) {
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+ if (staProtocol == null || Cools.isEmpty(staProtocol.getWorkNo())) {
+ return null;
+ }
+ TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
+ return taskWrk;
+ }
public boolean deviceDetection(RgvSlave.RgvStn inSta,Integer rgvNo) {
ArrayList<Integer> arrayList = new ArrayList<Integer>() {{
add(1009);
@@ -2104,6 +2117,7 @@
public synchronized void taskStart() {
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
try {
+ Thread.sleep(101);
if (rgvDetection(rgvSlave)) {
String taskNoNow = rgvOtherTaskWrk(rgvSlave);
List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
@@ -2119,10 +2133,12 @@
}
List<TaskWrk> taskWrkList = new ArrayList<>();
List<Integer> staList = new ArrayList<>();
+ List<String> taskNoList = taskStartRepel();
for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
TaskWrk taskWrk = deviceDetection(inSta);
if (taskWrk != null) {
if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
+ if (!taskNoList.contains(taskWrk.getWrkNo().toString())) continue;
taskWrkList.add(taskWrk);
staList.add(inSta.getStaNo());
}
@@ -2154,9 +2170,10 @@
if (rgvOtherIDLEOther(rgvSlave)){
if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
System.out.println("绌洪棽灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
- RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"绌洪棽灏辫繎璺宠繃");
-
- sign=true;
+ if (itSmall){
+ RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"绌洪棽灏辫繎璺宠繃");
+ sign=true;
+ }
}
}
if (sign){
@@ -2235,9 +2252,10 @@
if (rgvOtherIDLEOther2(rgvSlave)){
if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
- RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"杩愯灏辫繎璺宠繃");
-
- sign=true;
+ if (itSmall){
+ RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"杩愯灏辫繎璺宠繃");
+ sign=true;
+ }
}
}
if (sign){
@@ -2438,6 +2456,138 @@
}
}
}
+ }
+
+ public List<String> taskStartRepel() {
+ ArrayList<String> arrayListOld = new ArrayList<>();
+ ArrayList<String> arrayListNew = new ArrayList<>();
+ ArrayList<Integer> arrayListAllP = new ArrayList<>();
+ ArrayList<Long[]> arrayListAll = new ArrayList<>();
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ try{
+ boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+ String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+ if (taskNoNow.equals("鏃�")){
+ continue;
+ }
+ if (!arrayListOld.contains(taskNoNow)){
+ arrayListOld.add(taskNoNow);
+ }
+
+ TaskWrk taskWrk = taskWrkMapper.selectByTaskNo(taskNoNow);
+ if (taskWrk != null) {
+ if (!arrayListAllP.contains(taskWrk.getWrkNo())) {
+
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+ arrayListAllP.add(taskWrk.getWrkNo());
+ long startP = 0;
+ if (!itSmall){
+ startP = System.currentTimeMillis();
+ }
+
+ long endP = 0;
+ ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+ boolean sign = true;
+ for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+ if (taskProtocol.getTaskStatus() == 2){//鍙�
+ endP = taskProtocol.getTargetPosition();
+ sign = false;
+ } else if (taskProtocol.getTaskStatus() == 3 && sign){//鏀�
+ endP = taskProtocol.getTargetPosition();
+ }
+ }
+ if (endP == 0){
+ if (itSmall){
+ endP = System.currentTimeMillis();
+ }
+ }
+ Long[] longList = {taskWrk.getWrkNo().longValue(),startP,endP};
+ arrayListAll.add(longList);
+ }
+ } else {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+ try {
+ long startP = 0;
+ long endP = 0;
+ ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+ for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+ if (taskProtocol.getTaskStatus() == 2){//鍙�
+ startP = taskProtocol.getTargetPosition();
+ } else if (taskProtocol.getTaskStatus() == 3){//鏀�
+ endP = taskProtocol.getTargetPosition();
+ }
+ }
+ if (startP == 0 ){
+ if (!itSmall){
+ startP = System.currentTimeMillis();
+ }
+ }
+ if (endP == 0){
+ if (itSmall){
+ endP = System.currentTimeMillis();
+ }
+ }
+// taskNoNow
+ long parseLong = Long.parseLong(taskNoNow);
+ Long[] longList = {parseLong,startP,endP};
+ arrayListAll.add(longList);
+
+ } catch (Exception e) {
+ log.error("浠诲姟杩囨护鏌ヨ灏忚溅鎵ц浠诲姟寮傚父锛�"+e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+
+ } catch (Exception e) {
+ }
+ }
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ if (rgvDetection(rgvSlave)) {
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+ TaskWrk taskWrk = deviceDetectionGetWrkNo(rgvStn);
+ if (taskWrk != null) {
+ if (!arrayListAllP.contains(taskWrk.getWrkNo())) {
+ arrayListAllP.add(taskWrk.getWrkNo());
+ BasDevpPosition basDevpPositionSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
+ BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+ Long[] longList = {taskWrk.getWrkNo().longValue(),basDevpPositionSta.getPlcPosition(),basDevpPositionEnd.getPlcPosition()};
+ arrayListAll.add(longList);
+ }
+ }
+ }
+ }
+ }
+ List<Long[]> crossingPathsW = TrackUtils.findCrossingPathsW(arrayListAll);
+ List<Long> wrkNoList = new ArrayList<>();
+ List<Long> signWrk = new ArrayList<>();
+ for (Long[] longList : crossingPathsW) {
+ if (arrayListOld.contains(longList[0].toString()) || arrayListOld.contains(longList[1].toString())){
+ signWrk.add(longList[0]);
+ signWrk.add(longList[1]);
+ continue;
+ }
+ if (!wrkNoList.contains(longList[0]) && !signWrk.contains(longList[0])) {
+ if (!wrkNoList.contains(longList[1]) && !signWrk.contains(longList[1])) {
+ wrkNoList.add(longList[0]);
+ }
+ }
+ signWrk.add(longList[0]);
+ signWrk.add(longList[1]);
+ }
+ for (Integer str : arrayListAllP) {
+ if (!signWrk.contains(str.longValue())) {
+ arrayListNew.add(str.toString());
+ }
+ }
+ for (Long wrk : wrkNoList) {
+ arrayListNew.add(wrk.toString());
+ }
+
+ return arrayListNew;
}
//鑾峰彇璧风偣涓庣粓鐐瑰璞�
@@ -2819,37 +2969,49 @@
if (basCrnp.getInEnable().equals("Y")) {
boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);// 鍏ュ簱
if (crnStnToLocDemo){
+ crnProtocol.setSignIntOut(true);
crnProtocol.setLastIo("O");
- } else if (!signIntOut[crnSlave.getId()-1]){
+ } else if (!crnProtocol.isSignIntOut()){
crnProtocol.setLastIo("O");
}
} else if (basCrnp.getOutEnable().equals("Y")) {
- boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);// 鍑哄簱
- if (locToCrnStnDemo && signIntOut[crnSlave.getId()-1]){
+ if (!crnProtocol.isSignIntOut()){
crnProtocol.setLastIo("I");
- } else if (locToCrnStnDemo && !signIntOut[crnSlave.getId()-1]){
- signIntOut[crnSlave.getId()-1] = true;
- } else if (!signIntOut[crnSlave.getId()-1]){
- crnProtocol.setLastIo("I");
+ } else {
+ boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);// 鍑哄簱
+ if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+ crnProtocol.setLastIo("I");
+ } else if (locToCrnStnDemo){
+ crnProtocol.setLastIo("I");
+ crnProtocol.setSignIntOut(true);
+ } else if (!crnProtocol.isSignIntOut()){
+ crnProtocol.setLastIo("I");
+ }
}
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);// 鍑哄簱
- if (locToCrnStnDemo && signIntOut[crnSlave.getId()-1]){
+ if (!crnProtocol.isSignIntOut()) {
crnProtocol.setLastIo("I");
- } else if (locToCrnStnDemo && !signIntOut[crnSlave.getId()-1]){
- signIntOut[crnSlave.getId()-1] = true;
- } else if (!signIntOut[crnSlave.getId()-1]){
- crnProtocol.setLastIo("I");
+ } else {
+ boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);// 鍑哄簱
+ if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+ crnProtocol.setLastIo("I");
+ } else if (locToCrnStnDemo){
+ crnProtocol.setLastIo("I");
+ crnProtocol.setSignIntOut(true);
+ } else if (!crnProtocol.isSignIntOut()){
+ crnProtocol.setLastIo("I");
+ }
}
} else if (basCrnp.getInEnable().equals("Y")) {
boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);// 鍏ュ簱
if (crnStnToLocDemo){
+ crnProtocol.setSignIntOut(true);
crnProtocol.setLastIo("O");
- } else if (!signIntOut[crnSlave.getId()-1]){
+ } else if (!crnProtocol.isSignIntOut()){
crnProtocol.setLastIo("O");
}
}
@@ -2906,7 +3068,7 @@
// 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
TaskWrk taskWrk = null;
for (String locNo : crnProtocol.getLocMastDemoList()) {
- TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo);
+ TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo+"r");
if (Cools.isEmpty(taskWrk1)){
continue;
}
@@ -3077,6 +3239,8 @@
if (taskWrkMapper.updateById(taskWrk) == 0) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
}
+
+
} catch (Exception e) {
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
@@ -3304,30 +3468,59 @@
if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
continue;
}
- for (String locNo : crnProtocol.getLocMastDemoList()){
- LocMast locMast = locMastService.selectByLocNo(locNo);
- if (locMast.getLocSts().equals("F")){
- CarryParam carryParam = new CarryParam();
- carryParam.setTaskNo(locNo);
- carryParam.setBarcode(locNo);
- carryParam.setIoType(1);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
- carryParam.setTaskPriority(1);
- carryParam.setTargetPoint("1012");
- carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
- carryParam.setMeno("Demo");
- taskWrkController.addTaskPoint(carryParam);
- Thread.sleep(50);
- } else if (locMast.getLocSts().equals("O")){
- CarryParam carryParam = new CarryParam();
- carryParam.setTaskNo(locNo);
- carryParam.setBarcode(locNo);
- carryParam.setIoType(3);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
- carryParam.setTaskPriority(1);
- carryParam.setStartPoint("1012");
- carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
- carryParam.setMeno("Demo");
- taskWrkController.addTaskPoint(carryParam);
- Thread.sleep(50);
+ boolean signIn = false;
+ for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+ if (locS[3].equals(String.valueOf(crnProtocol.getLocMastDemoListSign().size()))){
+ String locNo1 = locS[0];
+ String locNo2 = locS[2];
+ ArrayList<String> locNoList = new ArrayList<>();
+ locNoList.add(locNo1);
+ locNoList.add(locNo2);
+ for (String locNo : locNoList) {
+ TaskWrk taskWrk1 = taskWrkService.selectByTaskNo(locNo+"r");
+ if (Cools.isEmpty(taskWrk1)){
+ continue;
+ }
+ signIn = true;
+ break;
+ }
+ }
+ }
+ if (signIn){
+ continue;
+ }
+ for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+ if (locS[3].equals("1")){
+ String locNo1 = locS[0];
+ String locNo2 = locS[2];
+ ArrayList<String> locNoList = new ArrayList<>();
+ locNoList.add(locNo1);
+ locNoList.add(locNo2);
+ for (String locNo : locNoList) {
+ LocMast locMast = locMastService.selectByLocNo(locNo);
+ if (locMast.getLocSts().equals("F")){
+ CarryParam carryParam = new CarryParam();
+ carryParam.setTaskNo(locNo);
+ carryParam.setBarcode(locNo);
+ carryParam.setIoType(1);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+ carryParam.setTaskPriority(1);
+ carryParam.setTargetPoint("1012");
+ carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
+ carryParam.setMeno("Demo");
+ taskWrkController.addTaskPoint(carryParam);
+ } else if (locMast.getLocSts().equals("O")){
+ CarryParam carryParam = new CarryParam();
+ carryParam.setTaskNo(locNo+"r");
+ carryParam.setBarcode(locNo);
+ carryParam.setIoType(3);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴� ====杞崲涓�====> 1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+ carryParam.setTaskPriority(1);
+ carryParam.setStartPoint("1012");
+ carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
+ carryParam.setMeno("Demo");
+ taskWrkController.addTaskPoint(carryParam);
+ LocFCSUtils.updateLocSInPlace(crnProtocol.getLocMastDemoListSign());
+ }
+ }
}
}
--
Gitblit v1.9.1