From d42a74a62f8bd2ad2760647e73cd6313bbcb10ed Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 18 十月 2023 08:58:50 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 440 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 271 insertions(+), 169 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 4563418..ed89dab 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -102,6 +102,8 @@
private RedisUtil redisUtil;
@Autowired
private WrkMastLocMapper wrkMastLocMapper;
+ @Autowired
+ private BasLiftOptService basLiftOptService;
/**
@@ -698,38 +700,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;
- }
-
-
-
- }
- }
-
}
// /**
@@ -876,6 +846,10 @@
BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
if (basDevp == null) {
return false;//鍑哄簱绔欑偣涓嶅瓨鍦�
+ }
+
+ if (!basDevp.getAutoing().equals("Y")) {
+ return false;//涓嶆槸鑷姩鐘舵��
}
if (!basDevp.getOutEnable().equals("Y")) {
@@ -1222,16 +1196,27 @@
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) {
return false;//鍑哄簱绔欑偣涓嶅瓨鍦�
+ }
+
+ //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿)
+ LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo()));
+ if (liftStaProtocol == null) {
+ 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;
+ }
}
if (!basDevp.getOutEnable().equals("Y")) {
@@ -1246,6 +1231,7 @@
if (liftProtocol == null) {
return false;
}
+
if (!liftProtocol.isIdle()) {
return false;
}
@@ -1258,13 +1244,6 @@
if (liftWrkMast != null) {
return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
}
-
- //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿)
- LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getSourceLocNo()));
- if (liftStaProtocol == null) {
- return false;//鎵句笉鍒扮珯鐐�
- }
- Integer startSta = liftStaProtocol.getStaNo();
//鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo());
@@ -1318,8 +1297,14 @@
&& liftProtocol.getTaskNo() != 0
&& !liftProtocol.getBusy()
) {
+ BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString());
+ int taskNo = liftProtocol.getTaskNo().intValue();
+ if (basLiftOpt != null) {
+ taskNo = basLiftOpt.getWrkNo();
+ }
+
//灏嗕换鍔℃。鏍囪涓哄畬鎴�
- WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(liftProtocol.getTaskNo().intValue());
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo);
if (wrkMast != null) {
switch (wrkMast.getWrkSts().intValue()) {
case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
@@ -1334,15 +1319,16 @@
wrkMast.setWrkSts(25L);
if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆
wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴�
+ }else {
+ if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) {
+ //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚
+ wrkMast.setWrkSts(29L);
+ }
}
+
if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) {
//閲婃斁鎻愬崌鏈轰护鐗�
liftProtocol.setToken(0);
- }
-
- if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) {
- //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚
- wrkMast.setWrkSts(29L);
}
break;
@@ -1409,7 +1395,7 @@
continue;
}
- boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙�
+ boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅
if (!step4) {
continue;
}
@@ -1557,14 +1543,47 @@
private boolean locToLocExecuteStep3(WrkMast wrkMast) {
Date now = new Date();
if (wrkMast.getWrkSts() == 23) {//23.灏忚溅鎼繍瀹屾垚
+ //婧愮珯
+ Integer sourceStaNo = wrkMast.getSourceStaNo();
+ //鐩爣绔�
+ Integer staNo = wrkMast.getStaNo();
+ if (sourceStaNo == null || staNo == null) {
+ return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖
+ }
+
+ int liftNo = staNo / 100;//鑾峰彇鎻愬崌鏈哄彿
+
//鑾峰彇鎻愬崌鏈虹嚎绋�
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
if (liftThread == null) {
return false;
}
LiftProtocol liftProtocol = liftThread.getLiftProtocol();
if (liftProtocol == null) {
return false;
+ }
+
+ //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
+ LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo()));
+ if (liftStaProtocol == null) {
+ return false;//鎵句笉鍒扮珯鐐�
+ }
+
+ if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) {
+ return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏
+ }
+ NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ 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;
+ }
}
if (!liftProtocol.isIdle()) {
@@ -1575,14 +1594,6 @@
WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue());
if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) {
return false;
- }
-
- //婧愮珯
- Integer sourceStaNo = wrkMast.getSourceStaNo();
- //鐩爣绔�
- Integer staNo = wrkMast.getStaNo();
- if (sourceStaNo == null || staNo == null) {
- return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖
}
//鑾峰彇鎻愬崌鏈哄懡浠�
@@ -1619,13 +1630,17 @@
private boolean locToLocExecuteStep4(WrkMast wrkMast) {
if (wrkMast.getWrkSts() == 4) {//4.鎻愬崌鏈烘惉杩愬畬鎴�
//鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
- BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), wrkMast.getLiftNo());
- if (targetBasDevp == null) {
- return false;//缂哄皯绔欑偣淇℃伅
+ LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(wrkMast.getLiftNo(), Utils.getLev(wrkMast.getLocNo()));
+ if (liftStaProtocol == null) {
+ return false;//鎵句笉鍒扮珯鐐�
+ }
+
+ if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) {
+ return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏
}
if (wrkMast.getShuttleNo() == null) {
- shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetBasDevp.getLocNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐�
+ shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐�
return false;
}
@@ -1643,14 +1658,14 @@
}
//鍒ゆ柇灏忚溅鏄惁鍒拌揪鐩爣杈撻�佺珯鐐�
- if (!shuttleProtocol.getCurrentLocNo().equals(targetBasDevp.getLocNo())) {
+ if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) {
//灏忚溅涓嶅湪鐩爣杈撻�佺珯鐐�
- shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetBasDevp.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐�
+ shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐�
return false;
}
//灏忚溅宸叉姷杈剧洰鏍囪緭閫佺珯鐐癸紝灏嗚揣鐗╂惉杩愬埌鐩爣搴撲綅
- NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), targetBasDevp.getLocNo(), wrkMast.getLocNo());
+ NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getLocNo());
if (result == null) {//璺緞璁$畻澶辫触
return false;
}
@@ -2028,23 +2043,56 @@
continue;//娌℃湁绌洪棽绔欑偣
}
- targetSta = (short) 317;
-
if (wrkMast.getStaNo() != 303 && wrkMast.getStaNo() != 317) {
- //瑕嗙洊宸ヤ綔妗g洰鏍囩珯
- wrkMast.setStaNo(targetSta.intValue());
- 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();
+ //鍚慉GV鍙戣捣缁勬墭璇锋眰
+ try {
+ HashMap<String, Object> param = new HashMap<>();
+ param.put("wrkNo", wrkMast.getWrkNo());
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/replenishment")
+ .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;
+ }
}
- 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();
+// 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;
+// }
}
}
}
@@ -2053,30 +2101,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("devNo", staNo);
+ param.put("containerCode", barcode);
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/start")
+ .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();
+ }
+ }
+ }
}
}
}
@@ -2458,8 +2622,6 @@
if (!stepMoveLoc) {
continue;
}
-
-// this.shuttleMoveExecuteStepClearWrkMast(wrkMast);//娓呯悊111.灏忚溅绉诲姩瀹屾垚
}
}
@@ -2966,6 +3128,9 @@
wrkMast.setModiTime(now);
wrkMastMapper.updateById(wrkMast);
+ shuttleProtocol.setShuttleNo((short) 0);//閲婃斁灏忚溅
+ shuttleProtocol.setToken(0);//閲婃斁灏忚溅
+
if (wrkMast.getWrkSts() == 111) {
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) {
@@ -3019,69 +3184,6 @@
MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
}
}
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-娓呯悊111.灏忚溅绉诲姩瀹屾垚
- */
- private boolean shuttleMoveExecuteStepClearWrkMast(WrkMast wrkMast) {
- if (wrkMast.getWrkSts() == 111) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) {
- return false;
- }
-
- Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo());
- if (o != null) {
- ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
- ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
- int size = assignCommand.getCommands().size();
- NyShuttleHttpCommand command = assignCommand.getCommands().get(size - 1);//鑾峰彇鏈�鍚庝竴娈靛懡浠�
- if (!command.getComplete()) {
- return false;//鏈�鍚庝竴娈靛懡浠よ繕鏈畬鎴愶紝涓嶅仛鎿嶄綔
- }
- NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
- navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//瑙i攣璺緞
-
- //鍒犻櫎redis
- redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
- }
-
- // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
- if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) {
- log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
- // 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
- log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
- }
-
- //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
- shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
- //婧愬簱浣嶆竻闆�
- shuttleProtocol.setSourceLocNo(null);
- //鐩爣搴撲綅娓呴浂
- shuttleProtocol.setLocNo(null);
- //浠诲姟鎸囦护娓呴浂
- shuttleProtocol.setAssignCommand(null);
- //宸ヤ綔鍙锋竻闆�
- shuttleProtocol.setTaskNo(0);
- //娓呴櫎浠ょ墝
- shuttleProtocol.setToken(0);
- News.info("鍥涘悜绌挎杞﹀凡纭涓旂Щ鍔ㄤ换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
- }
-
return true;
}
--
Gitblit v1.9.1