From b6fc07bc9d9af60511d171c2147b806bb7dd6983 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 08 十二月 2025 08:43:50 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 268 ++++++++++++++++++++++++++++++++++++-----------------
src/main/java/com/zy/core/MainProcess.java | 10 +
2 files changed, 191 insertions(+), 87 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 8bd8a93..9b7e178 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -50,6 +50,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -152,6 +153,10 @@
continue;
}
+ if(!staProtocol.isAutoing()){
+ continue;
+ }
+
String barcode = barcodeThread.getBarcode();
@@ -196,6 +201,9 @@
continue;
}
if (!staProtocol.isPakMk()) {
+ continue;
+ }
+ if(!staProtocol.isAutoing()){
continue;
}
// led 寮傚父鏄剧ず
@@ -1145,7 +1153,7 @@
//mark - 3 - ....
this.locToLoc(crn, crnProtocol,mark);
//棰勮皟搴�
-// this.crnRebackHp(crnProtocol, crnThread);
+ this.crnRebackHp(crnProtocol, crnThread);
}
// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -1156,7 +1164,20 @@
*/
public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- if (crnProtocol.getBay() == 1) {
+ if (crnProtocol.getBay() == 52) {
+ return;
+ }
+ BasCrnp basCrnp = basCrnpService.selectOne(
+ new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo())
+ );
+
+ Date modiTime = basCrnp.getModiTime();
+ Date now = new Date();
+ // 褰撳墠鏃堕棿 - 淇敼鏃堕棿 > 1鍒嗛挓锛�60000姣锛�
+ if (now.getTime() - modiTime.getTime() < 60 * 1000) {
+ return;
+ }
+ if(crnProtocol.getCrnNo() != 5){
return;
}
int x=1;
@@ -1203,8 +1224,6 @@
}
crnThread.setBackHpFlag(true);
}
-
-// }
}
/**
@@ -1997,9 +2016,6 @@
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
-
-
-
// 鍫嗗灈鏈哄浣�
News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
crnThread.setResetFlag(true);
@@ -3016,6 +3032,11 @@
staProtocol.setStaNo(site.shortValue());
devpThread.setPakMk(site,false);
MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ Date now = new Date();
+ System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
+
+
} else {
News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
}
@@ -3682,9 +3703,14 @@
}
-// if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
-// rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
-// }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
+ rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
+ && rgvThread.isPaking() && basRgv.getPakAll().equals("1")){
+ if(basRgv.getPakOut().equals("1") && basRgv.getPakIn().equals("1")){
+ rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+
+ }
+ }
}
@@ -4233,77 +4259,140 @@
/**
* 灏忚溅棰勮皟搴�
*/
-// public synchronized void rgvPreScheduling(){
-// try{
-// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-// for (BasRgvMap rgvSlave:basRgvMaps) {
-// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-// if (rgvProtocol == null) {
-// continue;
-// }else {
-// rgvProtocol = rgvProtocol.clone();
-// }
-// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-// if (basRgv == null) {
-// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-// continue;
-// }
-//
-// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害
-// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-// && rgvProtocol.getModeType() == RgvModeType.AUTO
-// && !rgvProtocol.isLoaded1ing()
-// && rgvProtocol.getTaskNo1() == 0
-// && !rgvProtocol.isLoaded2ing()
-// && rgvProtocol.getTaskNo2() == 0
-// && rgvThread.isPakMk()
-// ) {
-// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-// if (basRgvMap == null) {
-// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-// continue;
-// }
-// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-// // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-// for (DevpSlave devp : slaveProperties.getDevp()) {
-// // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴�
-// List<Integer> staNos = Arrays.asList( 1043, 1104, 1029, 1022, 1019, 1008, 1005);
-// for (Integer staNo : staNos) {
-// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-// StaProtocol staProtocol = devpThread.getStation().get(staNo);
-// if(staProtocol.isLoading()){
-// RgvCommand rgvCommand = new RgvCommand();
-// rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
-// rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-// rgvCommand.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙�
-// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 绉诲姩
-// switch (staNo){
-// case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣
-// case 1104: rgvCommand.setTargetPosition1(1105);break;
-// case 1037: rgvCommand.setTargetPosition1(1036);break;
-//
-// }
-// if(Objects.equals(basRgvMap.getNowRoute(), staNo)){
-// continue;
-// }
-// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
-// if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
-// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
-// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
-// }
-// }
-// }
-//
-// }
-//
-// }
-// }
-// }catch (Exception e){
-// log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
-// }
-// }
+ public synchronized void rgvPreSchedulingIn(RgvSlave slave, RgvProtocol rgvProtocol){
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
+ boolean flag = false;
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+ continue;
+ }
+ if(rgvStn.getStaNo2() == null){
+ continue;
+ }
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2()); //鍊掓暟绗簩涓�
+ StaProtocol staProtocol2 = null; //杩炵画鍙栬揣浠诲姟绔欑偣
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+ WrkMastSta wrkMastSta3 = null;//杩炲彇涓や釜
+ Integer staNo = null; //涓庤皟搴�
+ switch (rgvStn.getStaNo2()){
+ case 1043: staNo = 1044;break;
+ case 1104: staNo = 1103;break;
+ }
+ if(staNo != null ){
+ staProtocol2 = devpThread.getStation().get(staNo);
+ if (staProtocol2 == null) {
+ News.infoNoLog(" - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol2 = staProtocol2.clone();
+ }
+ BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
+ if (staDetl2 == null) {
+ News.error(" - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+ if((staProtocol.getWorkNo()>9999 && staProtocol2.getWorkNo()>9999) || (staProtocol.getWorkNo()<10000 && staProtocol2.getWorkNo()<10000)){
+ //褰撹繛缁彇璐х珯鐐逛负鐩稿悓绫诲瀷鏃舵墠鑳借繛缁彇
+ wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+ }
+
+ }
+ if(rgvProtocol.getTaskNo2() > 9999 && staProtocol.getWorkNo() < 10000){
+ continue;
+ }
+
+ if (staProtocol == null) {
+ News.infoNoLog( " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error(" - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog(" - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = new ArrayList<>();
+ switch (rgvProtocol.getRgvNo()){
+ case 1: route = RouteUtils.getRouteOne();break;
+ case 2: route = RouteUtils.getRouteTwo();break;
+ }
+ basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ basRgvMapService.updateById(basRgvMap);
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog(" - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta2 = null;
+ if(rgvProtocol.getTaskNo2() != null){
+ wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+ }
+ boolean result = false;
+ if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+ result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+ }
+ if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+ basRgv.setPakRgv("0");
+ basRgvService.updateById(basRgv);
+
+// rgvThread.setPakRgv(false);
+ continue;
+ }
+ wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2);
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ boolean sign = false;
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+
+ if(wrkMastSta3 != null ){
+ List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+ if(wrkMastStaPaking.size() < 1 && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){//宸叉湁鏍囪涓嶅啀鏍囪
+ wrkMastSta3.setMk(1);
+ basRgv.setPakAll("0");
+ basRgvService.updateById(basRgv);
+
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta3);
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+ }catch (Exception e){
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+ }
+ }
+ }
+ basRgv.setPakOut("0");//鍑哄簱涓嶅厑璁�
+ basRgvService.updateById(basRgv);
+ rgvThread.setPaking(false);//浠诲姟涓嬪彂閿佸畾
+
+ try{
+ wrkMastSta.setWrkSts(1);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛{}",wrkMastSta);
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
+ }
@@ -4324,6 +4413,12 @@
type = RgvTaskStatusType.PUT; //鏀捐揣
targetPosition = wrkMastSta.getStaEnd();
}
+ Date now = new Date();
+ if (targetPosition == 1038) {
+ System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
+ }
+
rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣
rgvCommand.setTargetPosition(targetPosition); //宸ヤ綅鐩爣绔欑偣
@@ -5086,8 +5181,8 @@
AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
agvBindCtnrAndBinParam.setCtnrTyp("1");
- ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
-
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+ break;
}
}catch (Exception e){
News.error(JSON.toJSONString(e.getMessage()));
@@ -5096,7 +5191,10 @@
}
WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
- if(wrkMast.getIoType() == 110){
+ if(Cools.isEmpty(wrkMast)){
+ continue;
+ }
+ if(wrkMast.getIoType() == 110 ){
BasAgvMast basAgvMast = new BasAgvMast();
List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
if(!basAgvMastList.isEmpty()){
@@ -5136,7 +5234,7 @@
AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
agvBindCtnrAndBinParam.setCtnrTyp("1");
- ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
}
}catch (Exception e){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 7fd715a..5f7dfd0 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -29,6 +29,7 @@
// 棰戠巼
private int i = 0;
private int k = 0;
+ private int q = 0;
private boolean rgcWrk = true;
/**
@@ -97,10 +98,15 @@
if (i>10){
//绌烘墭鐩樿嚜鍔ㄥ嚭搴�
mainService.autoEmptyOut();
- //绌烘墭鐩樿嚜鍔ㄥ叆搴�
- mainService.autoEmptyIn();
+
i=0;
}
+ if(q>2){
+ //绌烘墭鐩樿嚜鍔ㄥ叆搴�
+ mainService.autoEmptyIn();
+ q = 0;
+ }
+ q++;
i++;
/////////////////////////////////////RGV璋冨害/////////////////////////////////////
--
Gitblit v1.9.1