From 98651050745b62c1adb9a2845003a23dd4396a22 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 01 三月 2024 18:31:05 +0800
Subject: [PATCH] #车锁
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 213 insertions(+), 16 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 bad524d..9dafb82 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,6 +46,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.*;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -198,7 +199,7 @@
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .in("io_type", 107,103));
+ .in("io_type", 107,103,57));
if (!Cools.isEmpty(checkPick)) {
continue;
}
@@ -468,6 +469,166 @@
}
// News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 ===銆嬫墽琛屽畬鎴�");
+ }
+
+
+ //鐩樼偣鍐嶅叆搴�
+ public synchronized void stnToCrnStnPick2(){
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
+ && staProtocol.isInEnable()
+ && !staProtocol.isEmptyMk()
+// && staProtocol.getWorkNo() > 0
+ && staProtocol.isPakMk()){
+
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+ // led 寮傚父鏄剧ず
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ continue;
+ }
+ } else {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+ // led 寮傚父鏄剧ず
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+ if (ledThread != null) {
+ String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ continue;
+ }
+
+ WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+ if (wrkMast == null) {
+ // 鏃犵洏鐐规暟鎹�
+ continue;
+ }
+
+ // 鍑哄簱纭淇″彿浣�
+// if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
+// continue;
+// }
+// if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
+// || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+// continue;
+// }
+
+ // 鑾峰彇搴撲綅鍙�
+ try {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+ LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+ SearchLocParam param = new SearchLocParam();
+ param.setBarcode(barcode);
+ param.setIoType(107);
+ param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+ if (!Cools.isEmpty(locMast)){
+ param.setLocType1(locMast.getLocType1());
+ }else {
+ param.setLocType1(locTypeDto.getLocType1());
+ }
+
+ String response = "";
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin2/loc/v1")
+ .setJson(JSON.toJSONString(param))
+// .setTimeout(15, TimeUnit.SECONDS)
+ .build()
+ .doPost();
+ } catch(Exception e){
+ log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+ e.printStackTrace();
+ continue;
+ }
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+ log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+ if(response.equals("")) {
+ continue;
+ }
+ JSONObject jsonObject = JSON.parseObject(response);
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+ Integer code = jsonObject.getInteger("code");
+ if (code == 200) {
+ StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+ if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+ log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+ } else {
+ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+ try {
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo((short)161);
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ ledThread.errorReset();
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+ }
+ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+ } catch (Exception e) {
+ log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+ } else {
+ staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (ledThread != null) {
+ String errorMsg = jsonObject.getString("msg");
+ if (!Cools.isEmpty(errorMsg)) {
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+ }
+ }
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ log.error("stnToCrnStnPick2===>>fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+
+ }
+
+ }
+
+ }
}
/**
@@ -2130,7 +2291,7 @@
/*
* 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
* */
- public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
+ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
//鏇存柊褰撳墠灏忚溅閿�
@@ -2138,7 +2299,10 @@
Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
basRgvMapCurrent.setLockEndRoute(fallMerge);
- basRgvMapMapper.updateById(basRgvMapCurrent);
+ Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
+// if (i>0){
+ log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
+// }
//鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
@@ -2146,7 +2310,10 @@
List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
basRgvMapOther.setEndRoute(lockEndRoute);
- basRgvMapMapper.updateById(basRgvMapOther);
+ Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
+// if (i1>0){
+ log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
+// }
return true;
}catch (Exception e){
log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
@@ -2175,16 +2342,41 @@
}
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (
- rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
- rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
-
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
+ rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && (rgvProtocol.getTaskNo1()==0)
+ &&rgvThread.isPakMk()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+
+ Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
+ RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
+ if (rgvProtocolOther == null) {
+ continue;
+ }else {
+ rgvProtocolOther = rgvProtocolOther.clone();
+ }
+ if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocolOther.getModeType() == RgvModeType.AUTO
+ && rgvProtocolOther.getLoaded1()==0
+ && (rgvProtocolOther.getTaskNo1()==0)
+ &&rgvThreadOther.isPakMk()
+ ){
+ //瀵瑰伐浣滄。杩涜鍒ゆ柇
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
+ }else if (rgvProtocol.getTaskNo1() == 0){
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
+ }
+
+ }
+
+
+
}
}
}catch (Exception e){
@@ -2229,7 +2421,8 @@
}
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
+ rgvThread.setPakMk(true);
break;
}
WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
@@ -2285,7 +2478,8 @@
wrkMastStaMapper.updateById(wrkMastSta);
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+ rgvThread.setPakMk(true);
}
else {
@@ -2340,11 +2534,14 @@
boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
wrkEnable = true;
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+ rgvThread.setPakMk(false);
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
if (signMap){
+ Thread.sleep(300);
wrkMastSta.setWrkSts(1);
try{
wrkMastStaMapper.updateById(wrkMastSta);
+ return;
}catch (Exception e){
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
@@ -2539,7 +2736,7 @@
// continue;
// }
rgvAvoidanceXY(rgvProtocol.getRgvNo());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
}
}
}catch (Exception e){
--
Gitblit v1.9.1