From aa8638651f5f488ccc714a6e73e5b351bdfbde2e Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 27 十月 2025 17:57:51 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 248 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 191 insertions(+), 57 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 f086254..abf6c0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,9 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
+import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.AgvTaskAssignmentParam;
@@ -3486,6 +3484,11 @@
basRgvService.updateById(basRgv);
rgvThread.setPakMk(true);
}
+ List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
+ if(wrkMastStaPakingNum.size() <1){
+ basRgv.setPakAll("1"); //闃叉鏃犲叾浠栦换鍔℃椂锛岃繛缁彇璐ф棤娉曟仮澶�
+ basRgvService.updateById(basRgv);
+ }
}
}
@@ -3515,6 +3518,7 @@
basRgv.setPakAll("1");
basRgvService.updateById(basRgv);
}
+
// 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
@@ -3559,57 +3563,12 @@
rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹�
}
-// if(basRgv.getPakToCrn().equals("0")){
-// rgvRunWrkToCrn(rgv, rgvProtocol,mark); //鑻ュ皬杞﹀彇鍒颁竴涓帴椹充换鍔★紝绗簩涓伐浣嶅彧鑳藉彇鎺ラ┏浠诲姟
-// }
+
// if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
// rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
// }
-// if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) {
-// //灏忚溅鎵ц鏀捐揣浠诲姟
-// rgvOutExecute();
-//
-// }
- }
- }
- public synchronized void rgvRunWrkMastInTest(){
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
- basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-
-// WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
- 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浼樺厛鍙栬揣
-// rgvThread.setPakRgv(false);
-// continue;
-// }
- wrkMastSta.setWorkSta(1);
- wrkMastSta.setRgvNo(1);
- wrkMastSta.setStaStart(1035);
- Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
- boolean sign = false;
-// sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂
- if (sign){
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
-// rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
- if (!signMap){
- log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- } else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
}
}
/**
@@ -3710,7 +3669,7 @@
if(wrkMastSta3 != null ){
List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
- if(wrkMastStaPaking.size() < 1){//宸叉湁鏍囪涓嶅啀鏍囪
+ if(wrkMastStaPaking.size() < 1 ){//宸叉湁鏍囪涓嶅啀鏍囪
wrkMastSta3.setMk(1);
basRgv.setPakAll("0");
basRgvService.updateById(basRgv);
@@ -3815,7 +3774,7 @@
}
WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
if(basRgv.getPakToCrn().equals("0")){
- wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));
+ wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
}
boolean result = false;
if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
@@ -4603,8 +4562,9 @@
}
}
- public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol ,String tableName, String response, Boolean bool) {
- ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
+ public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol, String tableName, String response, Boolean bool) {
+ // 鏌ヨ绗﹀悎鏉′欢鐨勬墍鏈� ApiLog
+ List<ApiLog> apiLogs = apiLogService.selectList(new EntityWrapper<ApiLog>()
.eq("namespace", "鏈烘鑷備换鍔$浉鍏�")
.eq("request", "绔欑偣鍙�:" + staProtocol.getSiteId())
.eq("response", response)
@@ -4614,16 +4574,188 @@
.orderBy("create_time", false)
);
- if (!Cools.isEmpty(apiLog)){
+ // 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
+ for (ApiLog apiLog : apiLogs) {
long parseLong = Long.parseLong(apiLog.getTimestamp());
- if (new Date().getTime()-parseLong<5*1000*60){
+ if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+ // 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
return;
}
}
+
+ // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮褰曪紝鎴栬�呮墍鏈夎褰曟椂闂村樊澶т簬 5 鍒嗛挓锛屼繚瀛樻柊鐨勬棩蹇�
apiLogService.save("鏈烘鑷備换鍔$浉鍏�", tableName, "null", staProtocol.getBarcode(),
- "绔欑偣鍙�:" + staProtocol.getSiteId() ,
+ "绔欑偣鍙�:" + staProtocol.getSiteId(),
response, bool);
}
+
+ /*
+ * agv浠诲姟鐢熸垚 Full
+ * */
+ public synchronized void agvTaskCreateFull() {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍑哄簱鍙�
+ for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvFull()) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isLoading()){
+ continue;
+ }
+ if (staProtocol.isAutoing() ) {
+ WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
+ if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getTakeNone()) || !wrkMast.getTakeNone().equals("1")){
+ continue;
+ }
+
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
+ if (!basAgvMastList.isEmpty()) {
+ wrkMast.setTakeNone("2");
+ wrkMastMapper.updateById(wrkMast);
+ continue;
+ }
+
+ // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+ BasAgvMast basAgvMast = new BasAgvMast();
+
+
+ try {
+ LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+ SearchLocParam param = new SearchLocParam();
+ param.setBarcode(wrkMast.getBarcode());
+ param.setIoType(1);
+ param.setSourceStaNo(outStaAgv.getStaNo());
+ param.setLocType1(locTypeDto.getLocType1());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin/agv/loc/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+ basAgvMast.setTaskNo(wrkMast.getWrkNo());
+ basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
+ basAgvMast.setLocNo(dto.getLocNo());
+ basAgvMast.setDevpId(devp.getId());
+ basAgvMast.setIoType(2);
+
+ basAgvMastService.insert(basAgvMast);
+
+
+ wrkMast.setTakeNone("2");
+ wrkMastMapper.updateById(wrkMast);
+ } else {
+ News.error(JSON.toJSONString(staProtocol));
+ }
+ } catch (Exception e) {
+ News.error(JSON.toJSONString(e.getMessage()));
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * agv浠诲姟鐢熸垚 Empty
+ * */
+ public synchronized void agvTaskCreateEmpty() {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍑哄簱鍙�
+ for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvEmpty()) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isLoading()){
+ continue;
+ }
+
+ String barcode = staProtocol.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
+ continue;
+ }
+ } else {
+ News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
+ continue;
+ }
+ if (staProtocol.isAutoing()) {
+
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("source_sta_no", outStaAgv.getStaNo()));
+ if (!basAgvMastList.isEmpty()) {
+ News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
+ continue;
+ }
+
+ List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
+ if (!locMastList.isEmpty()) {
+ News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
+ continue;
+ }
+ // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+ BasAgvMast basAgvMast = new BasAgvMast();
+
+
+ try {
+ LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+ SearchLocParam param = new SearchLocParam();
+ param.setBarcode(barcode);
+ param.setIoType(1);
+ param.setSourceStaNo(outStaAgv.getStaNo());
+ param.setLocType1(locTypeDto.getLocType1());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/pakin/agv/loc/v1")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+ basAgvMast.setTaskNo(outStaAgv.getStaNo());
+ basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
+ basAgvMast.setLocNo(dto.getLocNo());
+ basAgvMast.setDevpId(devp.getId());
+ basAgvMast.setIoType(2);
+
+ basAgvMastService.insert(basAgvMast);
+ } else {
+ News.error(JSON.toJSONString(staProtocol));
+ }
+ } catch (Exception e) {
+ News.error(JSON.toJSONString(e.getMessage()));
+ }
+ }
+ }
+ }
+ }
+
/*
* agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
@@ -4718,7 +4850,9 @@
staProtocol = staProtocol.clone();
}
- if (!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())){
+ if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo()))
+ ||
+ (basAgvMast.getSourceStaNo().equals(2033))){
AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
--
Gitblit v1.9.1