From dfb16176c060ace64d01926c42e041d268e90262 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 24 十一月 2025 08:31:40 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 162 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 135 insertions(+), 27 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 412410d..4053997 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,10 +7,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.AgvTaskAssignmentParam;
-import com.zy.asrs.entity.param.ArmOrderAssignmentParam;
-import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
-import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OrderDetlValueResultUtil;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
@@ -111,6 +108,8 @@
private BasArmMastService basArmMastService;
@Autowired
private ApiLogService apiLogService;
+ @Autowired
+ private BasDevpOptService basDevpOptService;
@Value("${wms.url}")
private String wmsUrl;
@@ -201,6 +200,7 @@
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
}
staProtocol.setWorkNo(wrkNo);
+ staProtocol.setErrCode(errMsg);
News.info("寮傚父鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -229,6 +229,7 @@
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
}
staProtocol.setWorkNo(wrkNo);
+ staProtocol.setErrCode(errMsg);
News.info("鏉$爜鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -299,7 +300,6 @@
}
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
SearchLocParam param = new SearchLocParam();
param.setBarcode(barcode);
param.setIoType(1);
@@ -320,7 +320,15 @@
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
-
+ if(staProtocol.getSiteId() == 1036){ //1036
+ BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037));
+ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
+ agvBindCtnrAndBinParam.setCtnrCode(barcode);
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+ if (resultBind.getCode()!=200){
+ agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV瀹瑰櫒缁戝畾瑙g粦", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+ }
+ }
ledThread.errorReset();
log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
@@ -334,6 +342,10 @@
staProtocol.setWorkNo(wrkNo);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
+ switch (jsonObject.getInteger("code")){
+ case 700: staProtocol.setErrCode("鏈粍鎵�");break;
+ case 500: staProtocol.setErrCode("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");break;
+ }
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
News.info("浠诲姟涓嬪彂鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛岄敊璇紪鍙穥},浠诲姟鍙凤細{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo);
wrkNo++;
@@ -2029,7 +2041,7 @@
BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
BasErrLog basErrLog = new BasErrLog(
- null, // 缂栧彿
+ crnProtocol.getUuid(), // 缂栧彿
wrkMast.getWrkNo(), // 宸ヤ綔鍙�
now, // 鍙戠敓鏃堕棿
null, // 缁撴潫鏃堕棿
@@ -2077,7 +2089,7 @@
BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
BasErrLog basErrLog = new BasErrLog(
- null, // 缂栧彿
+ crnProtocol.getUuid(), // 缂栧彿
null, // 宸ヤ綔鍙�
now, // 鍙戠敓鏃堕棿
null, // 缁撴潫鏃堕棿
@@ -2259,7 +2271,8 @@
WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
if (null == wrkMast) {
if(staProtocol.getWorkNo() > 9999){ //寮傚父閫�鍑�
- MessageQueue.offer(SlaveType.Led, 2, new Task(3, "寮傚父閫�鍑�"));
+ String err = basDevpOptService.getErr(staProtocol.getWorkNo());
+ MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, err));
}
continue;
}
@@ -2390,6 +2403,8 @@
// 鍛戒护闆嗗悎
boolean reset = true;
for (Integer staNo : led.getStaArr()) {
+// System.out.println("staArr = " + staNo);
+
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
if (staProtocol == null) { continue; }
@@ -3302,6 +3317,9 @@
// 鑾峰彇RGV淇℃伅
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
continue;
}
@@ -3518,6 +3536,7 @@
basRgv.setPakAll("1");
basRgvService.updateById(basRgv);
rgvThread.setPakMk(true);
+
}
// List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
// if(wrkMastStaPakingNum.size() <1){
@@ -3537,6 +3556,7 @@
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+
if (rgvProtocol == null) {
continue;
}
@@ -3547,6 +3567,9 @@
continue;
}
if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+ rgvThread.setPaking(true);
+ }
+ if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && rgvProtocol.getStatusType1() == RgvStatusType.IDLE){
rgvThread.setPaking(true);
}
if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
@@ -3704,7 +3727,7 @@
if(wrkMastSta3 != null ){
List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
- if(wrkMastStaPaking.size() < 1 ){//宸叉湁鏍囪涓嶅啀鏍囪
+ if(wrkMastStaPaking.size() < 1 && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){//宸叉湁鏍囪涓嶅啀鏍囪
wrkMastSta3.setMk(1);
basRgv.setPakAll("0");
basRgvService.updateById(basRgv);
@@ -3836,8 +3859,13 @@
wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 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);
@@ -3847,7 +3875,7 @@
}
}
}
- if(wrkMastSta3 != null ){
+ if(wrkMastSta3 != null && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){
List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
if(wrkMastStaPaking.size() < 1){
wrkMastSta3.setMk(1);
@@ -3855,7 +3883,7 @@
basRgvService.updateById(basRgv);
try{
wrkMastStaMapper.updateById(wrkMastSta3);
- log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+ log.error("閿佸畾鐩搁殧绔欑偣浠诲姟:"+ wrkMastSta3.getWrkNo());
}catch (Exception e){
log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
}
@@ -4356,7 +4384,7 @@
//arm浠诲姟瀹屾垚鑷姩缁勬墭
ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
if (result.getCode()==200){
- basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4);
+ basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,5);
} else {
armTaskAssignmentCallApiLogSave(staProtocol, "鑷姩缁勬墭澶辫触", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
// log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
@@ -4525,7 +4553,7 @@
new EntityWrapper<BasArmMast>()
.eq("arm_no", basArm.getArmNo())
.eq("sorting_line", basArm.getSortingLineSou())
- .eq("sku", basArmMast.getSku())
+ .eq("matnr", basArmMast.getMatnr())
.eq("order_no", basArmMast.getOrderNo())
.eq("binding_tags", basArmMast.getBindingTags())
);
@@ -4550,7 +4578,7 @@
.eq("status", 2)
.eq("binding_tags", basArmMast.getBindingTags())
);
- Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getSku(),basArmMastOne.getBindingTags());
+ Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getMatnr(),basArmMastOne.getBindingTags());
if (anfmeSignOne>1D){
armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦紒锛侊紒", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
@@ -4559,12 +4587,12 @@
}
}
- OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
+ OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr());
if (Cools.isEmpty(orderDetlValueResultUtil)){
continue;
}
- Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags());
+ Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getMatnr(),basArmMast.getBindingTags());
orderDetlValueResultUtil.setAnfme(anfmeSign);
//璁㈠崟涓嬪彂
try{
@@ -4702,6 +4730,7 @@
basAgvMastService.insert(basAgvMast);
+
wrkMast.setTakeNone("2");
wrkMastMapper.updateById(wrkMast);
} else {
@@ -4755,7 +4784,9 @@
// News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
continue;
}
-
+ if(barcode.equals("0")){
+ continue;
+ }
List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
if (!locMastList.isEmpty()) {
News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
@@ -4861,6 +4892,52 @@
}
}
+ /*
+ * agv浠诲姟鐢熸垚 寮傚父閫佸埌鍏ュ簱鍙�
+ * */
+ public synchronized void agvTaskCreateException() {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ Integer outStaAgv = 1041;
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStaAgv);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isLoading()){
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 10000) {
+
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037));
+ if (!basAgvMastList.isEmpty()) {
+ News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岀瓑寰呬换鍔℃墽琛屽畬姣�!!!", outStaAgv);
+ continue;
+ }
+ // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+ BasAgvMast basAgvMast = new BasAgvMast();
+ try {
+ basAgvMast.setTaskNo(staProtocol.getWorkNo());
+ basAgvMast.setSourceStaNo(1041);
+ basAgvMast.setStaNo(1037);
+ basAgvMast.setDevpId(devp.getId());
+ basAgvMast.setIoType(3);//杈撻��==銆嬭緭閫佺嚎绔欑偣 3
+ basAgvMastService.insert(basAgvMast);
+ break;
+ } catch (Exception e) {
+ News.error(JSON.toJSONString(e.getMessage()));
+ }
+ }
+ }
+ }
+
/*
* agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
@@ -4885,7 +4962,6 @@
if (staProtocol.isAutoing()){
AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
//浠诲姟涓嬪彂
ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
if (result.getCode()==200){
@@ -4903,6 +4979,8 @@
log.error("AGV浠诲姟涓嬪彂澶辫触"+e.getMessage());
}
}
+
+
/*
* agv浠诲姟涓嬪彂:AGV搴撲綅==銆婣GV搴撲綅
@@ -4960,15 +5038,30 @@
(basAgvMast.getSourceStaNo().equals(2033))){
AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
- //浠诲姟涓嬪彂
- ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
- if (result.getCode()==200){
- basAgvMast.setStatus(1);
- basAgvMastService.updateById(basAgvMast);
+ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
+ WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
+ agvBindCtnrAndBinParam.setCtnrCode(wrkMast.getBarcode());
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvBindCtnrAndBinParam);
+ if (resultBind.getCode()==200){
+ //浠诲姟涓嬪彂
+ ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
+ if (result.getCode()==200){
+ basAgvMast.setStatus(1);
+ basAgvMastService.updateById(basAgvMast);
+ } else {
+ agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+ }
} else {
- agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+ agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV瀹瑰櫒缁戝畾瑙g粦", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
}
+// //浠诲姟涓嬪彂
+// ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
+// if (result.getCode()==200){
+// basAgvMast.setStatus(1);
+// basAgvMastService.updateById(basAgvMast);
+// } else {
+// agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+// }
}
} catch (Exception e){
log.error("浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"====銆婣GV浠诲姟涓嬪彂澶辫触"+e.getMessage());
@@ -5009,7 +5102,21 @@
if (!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())){
AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
-
+// AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
+//
+// ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvBindCtnrAndBinParam);
+// if (resultBind.getCode()==200){
+// //浠诲姟涓嬪彂
+// ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
+// if (result.getCode()==200){
+// basAgvMast.setStatus(1);
+// basAgvMastService.updateById(basAgvMast);
+// } else {
+// agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+// }
+// } else {
+// agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV瀹瑰櫒缁戝畾瑙g粦", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
+// }
//浠诲姟涓嬪彂
ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
if (result.getCode()==200){
@@ -5028,6 +5135,7 @@
}
}
+
public void agvTaskAssignmentCallApiLogSave(BasAgvMast basAgvMast ,String tableName, String response, Boolean bool) {
ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
.eq("namespace", "Agv浠诲姟涓嬪彂")
--
Gitblit v1.9.1