From 5f685f89bf6501325b6129ecf709b988369eeedd Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 13 十月 2023 10:16:49 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 260 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 199 insertions(+), 61 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 768da28..d516740 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -698,38 +698,6 @@
continue;
}
}
-
-
-
-
- // 鏍规嵁杈撻�佺嚎plc閬嶅巻
- for (DevpSlave devp : slaveProperties.getDevp()) {
- // 閬嶅巻鍏ュ簱绔�
- for (DevpSlave.StaRack staRack : devp.getRackInStn()) {
- // 鑾峰彇鍏ュ簱绔欎俊鎭�
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(staRack.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- Short workNo = staProtocol.getWorkNo();
- BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId());
- if (basDevp == null) {
- continue;//绔欑偣淇℃伅涓嶅瓨鍦�
- }
-
- // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佹湁鐗┿�佸洓鍚戠┛姊溅鍙彇淇″彿
- if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isShuttleTakeEnable())) {
- continue;
- }
-
-
-
- }
- }
-
}
// /**
@@ -1222,12 +1190,6 @@
return false;
}
- //璋冨害灏忚溅閬胯
- boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread);
- if (!result) {
- return false;
- }
-
//鑾峰彇鍑哄簱绔欑偣(鐩爣绔�)
BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
if (basDevp == null) {
@@ -1246,6 +1208,7 @@
if (liftProtocol == null) {
return false;
}
+
if (!liftProtocol.isIdle()) {
return false;
}
@@ -1265,6 +1228,16 @@
return false;//鎵句笉鍒扮珯鐐�
}
Integer startSta = liftStaProtocol.getStaNo();
+
+ NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) {
+ //灏忚溅杩樺湪杈撻�佺珯鐐�
+ //璋冨害灏忚溅閬胯
+ boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread);
+ if (!result) {
+ return false;
+ }
+ }
//鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo());
@@ -1409,7 +1382,7 @@
continue;
}
- boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙�
+ boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅
if (!step4) {
continue;
}
@@ -2031,8 +2004,43 @@
targetSta = (short) 317;
if (wrkMast.getStaNo() != 303 && wrkMast.getStaNo() != 317) {
+ //鍚慉GV鍙戣捣缁勬墭璇锋眰
+// try {
+// HashMap<String, Object> param = new HashMap<>();
+// param.put("wrkNo", wrkMast.getWrkNo());
+// String response = new HttpHandler.Builder()
+// .setUri(wmsUrl)
+// .setPath("/openAGV")
+// .setJson(JSON.toJSONString(param))
+// .build()
+// .doPost();
+// JSONObject jsonObject = JSON.parseObject(response);
+// Integer code = jsonObject.getInteger("code");
+// if (code.equals(200)) {//AGV缁勬墭鎴愬姛
+// //瑕嗙洊宸ヤ綔妗g洰鏍囩珯
+// wrkMast.setStaNo(targetSta.intValue());
+// wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
+// if (wrkMastMapper.updateById(wrkMast) > 0) {
+// //鍚�300绔欏啓鍏ョ洰鏍囩珯
+// staProtocol = staProtocol.clone();
+// staProtocol.setStaNo(targetSta);//绉诲姩鍒扮洰鏍囩珯
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// try {
+// Thread.sleep(500);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// continue;
+// }
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// }
+
//瑕嗙洊宸ヤ綔妗g洰鏍囩珯
wrkMast.setStaNo(targetSta.intValue());
+ wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
if (wrkMastMapper.updateById(wrkMast) > 0) {
//鍚�300绔欏啓鍏ョ洰鏍囩珯
staProtocol = staProtocol.clone();
@@ -2053,30 +2061,146 @@
StaProtocol staProtocol317 = devpThread.getStation().get(317);
if (staProtocol303.isAutoing() && staProtocol303.isLoading() && staProtocol303.getWorkNo() != 0) {
//璋冨害鏈烘鑷�
-// //鏌ヨ鏄惁鏈夊伐浣滄。
-// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
-// if (wrkMast == null) {
-// continue;
-// }
-// WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-// if (wrkDetl == null) {
-// continue;
-// }
-// RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303");
- RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "303");
+ //鏌ヨ鏄惁鏈夊伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;
+ }
+ List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+ if (wrkDetls.isEmpty()) {
+ continue;
+ }
+
+ if (wrkMast.getInvWh() == null) {
+ wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303");
+ }
+ }
}else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) {
//璋冨害鏈烘鑷�
-// //鏌ヨ鏄惁鏈夊伐浣滄。
-// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
-// if (wrkMast == null) {
-// continue;
-// }
-// WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-// if (wrkDetl == null) {
-// continue;
-// }
-// RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317");
- RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "317");
+ //鏌ヨ鏄惁鏈夊伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;
+ }
+ List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+ if (wrkDetls.isEmpty()) {
+ continue;
+ }
+ if (wrkMast.getInvWh() == null) {
+ wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317");
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * AGV琛ヨ揣(閫氱煡AGV鍙栬揣)
+ */
+ public void agvRestockInto() {
+ //妫�娴�309鍜�312绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗�
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol309 = devpThread.getStation().get(309);
+ StaProtocol staProtocol312 = devpThread.getStation().get(312);
+ if (staProtocol309 == null || staProtocol312 == null) {
+ continue;
+ }
+
+ if (staProtocol309.isAutoing() && staProtocol309.isLoading()) {
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 11);//308绔欐潯鐮佸櫒
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ //閫氱煡AGV鍙栬揣
+ agvRestockCall("CS-301-001-01@3", barcode);
+ }
+ } else if (staProtocol312.isAutoing() && staProtocol312.isLoading()) {
+ // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 12);//311绔欐潯鐮佸櫒
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ //閫氱煡AGV鍙栬揣
+ agvRestockCall("CS-302-001-01@3", barcode);
+ }
+ }
+ }
+ }
+
+ //閫氱煡AGV鍙栬揣
+ private boolean agvRestockCall(String staNo, String barcode) {
+ try {
+ HashMap<String, Object> param = new HashMap<>();
+ param.put("staNo", staNo);
+ param.put("barcode", barcode);
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/callAGV")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {//鍛煎彨AGV
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ return false;
+ }
+
+ // 300绔欐嫞鏂�
+ public void pick300() {
+ //妫�娴�300绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗┿�佸伐浣滃彿
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(300);
+ if (staProtocol == null) {
+ continue;
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0) {
+ //鏌ヨ鏄惁鏈夊伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;
+ }
+
+ if (wrkMast.getWrkSts() != 25) {//25.鎻愬崌鏈烘惉杩愬畬鎴�
+ continue;
+ }
+
+ if (wrkMast.getMk() == null) {
+ Integer sourceStaNo = wrkMast.getSourceStaNo();//婧愮珯
+ Integer staNo = wrkMast.getStaNo();//鐩爣绔�
+ //瑕嗙洊宸ヤ綔妗g洰鏍囩珯
+ wrkMast.setStaNo(sourceStaNo);
+ wrkMast.setSourceStaNo(staNo);
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //鍚�300绔欏啓鍏ョ洰鏍囩珯
+ staProtocol = staProtocol.clone();
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//绉诲姩鍒扮洰鏍囩珯
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ try {
+ Thread.sleep(500);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
}
}
@@ -2965,6 +3089,20 @@
wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
wrkMast.setModiTime(now);
wrkMastMapper.updateById(wrkMast);
+
+ shuttleProtocol.setShuttleNo((short) 0);//閲婃斁灏忚溅
+ shuttleProtocol.setToken(0);//閲婃斁灏忚溅
+
+ if (wrkMast.getWrkSts() == 111) {
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) {
+ log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
+ if (!wrkMastService.deleteById(wrkMast)) {
+ log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ }
return false;
}
--
Gitblit v1.9.1