From f0429051895816ebadc50bbc409021e23e4d1a3a Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 08 十二月 2025 16:43:06 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 211 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 197 insertions(+), 14 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 9b7e178..1f90cdf 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1153,7 +1153,7 @@
//mark - 3 - ....
this.locToLoc(crn, crnProtocol,mark);
//棰勮皟搴�
- this.crnRebackHp(crnProtocol, crnThread);
+ this.crnRebackHp(crn, crnProtocol, crnThread);
}
// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -1162,7 +1162,7 @@
/**
* 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
*/
- public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
+ public synchronized void crnRebackHp(CrnSlave slave, CrnProtocol crnProtocol, CrnThread crnThread) {
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
if (crnProtocol.getBay() == 52) {
return;
@@ -1170,15 +1170,22 @@
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;
- }
+ boolean result = true;
if(crnProtocol.getCrnNo() != 5){
return;
+ }
+ for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo2());
+ if (staProtocol == null) {
+ News.infoNoLog(" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol="+staProtocol);
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 ){
+ result =false;
+ }
}
int x=1;
switch (crnProtocol.getCrnNo()){
@@ -1188,10 +1195,18 @@
case 4: x =14; break;
case 5: x =18; break;
}
-
+ Date modiTime = basCrnp.getModiTime();
+ Date now = new Date();
+ // 褰撳墠鏃堕棿 - 淇敼鏃堕棿 > 1鍒嗛挓锛�60000姣锛�
+ if(result){
+ if (now.getTime() - modiTime.getTime() < 60 * 1000) {
+ return;
+ }
+ }
if(crnProtocol.getCrnNo() != 5){
return;
}
+
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
return;
@@ -3708,11 +3723,37 @@
&& rgvThread.isPaking() && basRgv.getPakAll().equals("1")){
if(basRgv.getPakOut().equals("1") && basRgv.getPakIn().equals("1")){
rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
-
+ if (rgvProtocol.getLastIo().equals("I")) {
+ if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+ //mark - 1 - ....
+ if (rgvProtocol.getTaskNo1()==0){
+ rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+ }
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
+ //mark - 2 - ....
+ if (rgvProtocol.getTaskNo2()==0){
+ this.rgvPreSchedulingOut(rgv, rgvProtocol); // 鍑哄簱
+ }
+ rgvProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
+ if (rgvProtocol.getTaskNo2()==0){
+ this.rgvPreSchedulingOut(rgv, rgvProtocol); // 鍑哄簱
+ }
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+ if (rgvProtocol.getTaskNo1()==0){
+ rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+ }
+ rgvProtocol.setLastIo("O");
+ }
+ }
}
}
-
-
}
}
/**
@@ -3978,6 +4019,148 @@
basRgv.setPakIn("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());
+ }
+
+
+ }
+ }
+ /**
+ * 灏忚溅鍑哄簱浠诲姟鍙栬揣涓嬪彂
+ */
+ public synchronized void rgvPreSchedulingOut(RgvSlave slave, RgvProtocol rgvProtocol){
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
+ boolean flag = false;
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2());
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+ continue;
+ }
+ if(staProtocol.getWorkNo() == 0){
+ continue;
+ }
+ StaProtocol staProtocol2 = null;
+ WrkMastSta wrkMastSta3 = null;
+
+// if(rgvStn.getStaNo2()!= null ){
+// staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
+// 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;
+// }
+// wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+//
+// }
+ 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.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog(" - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+ 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()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
+ if(basRgv.getPakToCrn().equals("0")){
+ wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol2.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
+ }
+ if( null == wrkMastSta ) {
+ News.infoNoLog(" - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol2.getWorkNo());
+ continue;
+ }
+ boolean result = false;
+ if( LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+ StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ if (staProtocolSta == null) {
+ News.infoNoLog(" - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocolSta = staProtocolSta.clone();
+ }
+ if(staProtocolSta.isLoading()){
+ continue;
+ }
+ }
+ wrkMastSta.setWorkSta(1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ boolean sign = false;
+
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+ if(wrkMastSta.getMk() == 1){//鑻ュ凡鎵ц
+ basRgv.setPakAll("1");
+ basRgvService.updateById(basRgv);
+ }
+ if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+ basRgv.setPakToCrn("0");
+ basRgvService.updateById(basRgv);
+ if(wrkMastSta3 != null){
+ if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){
+ wrkMastSta3 = null;//鑻ユ帴椹崇浜屼綅涓嶆帴椹虫椂鍙栨秷杩炵画鍙栬揣
+ }
+ }
+ }
+ if(wrkMastSta3 != null ){
+ List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+ if(wrkMastStaPaking.size() < 1){
+ wrkMastSta3.setMk(1);
+ basRgv.setPakAll("0");
+ basRgvService.updateById(basRgv);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta3);
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+ }catch (Exception e){
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+ }
+ }
+ }
+ basRgv.setPakIn("0");
+ basRgvService.updateById(basRgv);
rgvThread.setPaking(false);
try{
wrkMastSta.setWrkSts(1);
@@ -5141,6 +5324,7 @@
continue;
}
if (staProtocol.isAutoing() ) {
+ //staProtocol.getWorkNo()>10000
if(staProtocol.getWorkNo()>10000){
BasAgvMast basAgvMast = new BasAgvMast();
List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
@@ -5296,7 +5480,6 @@
agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getBarcode());
agvBindCtnrAndBinParam.setCtnrTyp("1");
ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
-
wrkMast.setTakeNone("2");
wrkMastMapper.updateById(wrkMast);
} else {
--
Gitblit v1.9.1