From 900f7032f7e701efd4741c2bcabeaad969e5fd3f Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 14 一月 2025 15:20:27 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 13 ++
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 9 +
src/main/java/com/zy/asrs/controller/ShuttleController.java | 157 ++++++++++++++++---------------
src/main/java/com/zy/core/thread/ShuttleThread.java | 2
src/main/java/com/zy/core/action/ShuttleAction.java | 81 ++++++++++++++++
src/main/java/com/zy/core/enums/ShuttleTaskModeType.java | 2
src/main/webapp/views/shuttle.html | 4
7 files changed, 191 insertions(+), 77 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java
index d2c475c..30721f7 100644
--- a/src/main/java/com/zy/asrs/controller/ShuttleController.java
+++ b/src/main/java/com/zy/asrs/controller/ShuttleController.java
@@ -286,84 +286,87 @@
assignCommand.setLocNo(param.getDistLocNo());
}
- for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
- if (param.getShuttleNo().equals(shuttleSlave.getId())) {
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
- if (shuttleThread == null) {
- throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
- }
-
- ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode().intValue());
- assignCommand.setShuttleNo(shuttleSlave.getId()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(shuttleTaskModeType.id);
- assignCommand.setTaskNo(commonService.getWorkNo(99));//鑾峰彇浠诲姟鍙�
- assignCommand.setAuto(false);//鎵嬪姩妯″紡
-
- if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) {
- //绉诲姩鍒扮洰鏍囧簱浣�
- Integer mapType = NavigationMapType.NORMAL.id;
- if (shuttleProtocol.getHasLift()) {
- mapType = NavigationMapType.DFX.id;
- }
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapType, assignCommand, shuttleThread);
- if (commands == null) {
- throw new CoolException("璺緞璁$畻澶辫触");
- }
-
- assignCommand.setCommands(commands);
-
- //灏濊瘯閿佸畾鐩爣绔欒矾寰�
- boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(param.getDistLocNo()), shuttleProtocol.getShuttleNo(), assignCommand.getNodesDeepCopy(), true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
- if (!result2) {
- News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", param.getDistLocNo(), shuttleProtocol.getShuttleNo());
- throw new CoolException("璺緞閿佸畾澶辫触");
- }
-
- } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) {
- //鎵樼洏椤跺崌
- List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
- assignCommand.setCommands(commands);
- } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) {
- //鎵樼洏涓嬮檷
- List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
- assignCommand.setCommands(commands);
- } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) {
- //鍏呯數寮�鍏�
- boolean charge = false;
- if (shuttleProtocol.getHasCharge()) {
- //宸插厖鐢碉紝鍏抽棴鍏呯數
- charge = false;
- }else {
- //寮�鍚厖鐢�
- charge = true;
- }
- List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, charge);
- assignCommand.setCommands(commands);
- } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) {
- //澶嶄綅
- shuttleThread.setSyncTaskNo(0);//宸ヤ綔鍙锋竻绌�
- shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽
- shuttleThread.setPakMk(true);//浣滀笟鏍囪澶嶄綅
-
- shuttleThread.enableMoveLoc(null, false);
- return R.ok();
- } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_TASK) {
- //绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)
- shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), param.getDistLocNo(), param.getShuttleNo());
- return R.ok();
- } else {
- throw new CoolException("鏈煡鍛戒护");
- }
-
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return R.ok();
- }
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, param.getShuttleNo());
+ if (shuttleThread == null) {
+ throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
}
- return R.error();
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎");
+ }
+
+ ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode().intValue());
+ assignCommand.setShuttleNo(param.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(shuttleTaskModeType.id);
+ assignCommand.setTaskNo(commonService.getWorkNo(99));//鑾峰彇浠诲姟鍙�
+ assignCommand.setAuto(false);//鎵嬪姩妯″紡
+
+ if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) {
+ //绉诲姩鍒扮洰鏍囧簱浣�
+ Integer mapType = NavigationMapType.NORMAL.id;
+ if (shuttleProtocol.getHasLift()) {
+ mapType = NavigationMapType.DFX.id;
+ }
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapType, assignCommand, shuttleThread);
+ if (commands == null) {
+ throw new CoolException("璺緞璁$畻澶辫触");
+ }
+
+ assignCommand.setCommands(commands);
+
+ //灏濊瘯閿佸畾鐩爣绔欒矾寰�
+ boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(param.getDistLocNo()), shuttleProtocol.getShuttleNo(), assignCommand.getNodesDeepCopy(), true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+ if (!result2) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", param.getDistLocNo(), shuttleProtocol.getShuttleNo());
+ throw new CoolException("璺緞閿佸畾澶辫触");
+ }
+
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) {
+ //鎵樼洏椤跺崌
+ List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+ assignCommand.setCommands(commands);
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) {
+ //鎵樼洏涓嬮檷
+ List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+ assignCommand.setCommands(commands);
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) {
+ //鍏呯數寮�鍏�
+ boolean charge = false;
+ if (shuttleProtocol.getHasCharge()) {
+ //宸插厖鐢碉紝鍏抽棴鍏呯數
+ charge = false;
+ }else {
+ //寮�鍚厖鐢�
+ charge = true;
+ }
+ List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, charge);
+ assignCommand.setCommands(commands);
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) {
+ //澶嶄綅
+ shuttleThread.setSyncTaskNo(0);//宸ヤ綔鍙锋竻绌�
+ shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽
+ shuttleThread.setPakMk(true);//浣滀笟鏍囪澶嶄綅
+
+ shuttleThread.enableMoveLoc(null, false);
+ return R.ok();
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_TASK) {
+ //绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)
+ shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), param.getDistLocNo(), param.getShuttleNo());
+ return R.ok();
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_DEMO_OPEN) {
+ //婕旂ず妯″紡-寮�
+ shuttleThread.enableDemo(true);
+ return R.ok();
+ } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_DEMO_CLOSE) {
+ //婕旂ず妯″紡-鍏�
+ shuttleThread.enableDemo(false);
+ return R.ok();
+ } else {
+ throw new CoolException("鏈煡鍛戒护");
+ }
+
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return R.ok();
}
@PostMapping("/detl/update")
diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java
index a083581..67e1a26 100644
--- a/src/main/java/com/zy/core/action/ShuttleAction.java
+++ b/src/main/java/com/zy/core/action/ShuttleAction.java
@@ -2,19 +2,25 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zy.asrs.entity.BasShuttleOpt;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasShuttleOptService;
import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.Utils;
import com.zy.common.ExecuteSupport;
import com.zy.common.model.NavigateNode;
import com.zy.common.utils.NavigateMapUtils;
import com.zy.common.utils.RedisUtil;
+import com.zy.common.utils.ShuttleOperaUtils;
import com.zy.core.News;
import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.*;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.command.ShuttleAssignCommand;
@@ -27,6 +33,7 @@
import org.springframework.stereotype.Component;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -47,6 +54,10 @@
private ConfigService configService;
@Autowired
private BasShuttleOptService basShuttleOptService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private ShuttleDispatchUtils shuttleDispatchUtils;
public synchronized boolean assignWork(Integer shuttleNo, ShuttleAssignCommand assignCommand) {
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
@@ -268,6 +279,76 @@
return true;
}
+ //婕旂ず妯″紡
+ public synchronized void demo(Integer shuttleNo) {
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
+ if (shuttleThread == null) {
+ return;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return;
+ }
+
+ if (!shuttleProtocol.getDemo()) {
+ return;
+ }
+
+ WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(shuttleNo);
+ if (moveWorking != null) {
+ return;
+ }
+
+ WrkMast shuttleWorking = wrkMastService.selectShuttleWorking(shuttleNo);
+ if(shuttleWorking != null) {
+ return;
+ }
+
+ WrkMast chargeWorking = wrkMastService.selectChargeWorking(shuttleNo);
+ if (chargeWorking != null) {
+ return;
+ }
+
+ if (shuttleThread.isRequireCharge()) {
+ return;
+ }
+
+ if (!shuttleThread.isIdle()) {
+ return;
+ }
+
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ int lev = Utils.getLev(currentLocNo);
+
+ LocMast targetLoc = null;
+ EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
+ wrapper.eq("lev1", lev);
+ wrapper.eq("loc_sts", "O");
+ wrapper.last("ORDER BY RAND() LIMIT 1");
+ for (int i = 0; i < 3; i++) {
+ LocMast locMast = locMastService.selectOne(wrapper);
+ if(locMast == null) {
+ continue;
+ }
+
+ ArrayList<String> locs = new ArrayList<>();
+ locs.add(locMast.getLocNo());
+ Integer shuttle = Utils.checkGroupLocHasShuttle(locs);
+ if(shuttle != null) {
+ continue;
+ }
+
+ targetLoc = locMast;
+ }
+
+ if(targetLoc == null) {
+ return;
+ }
+
+ shuttleDispatchUtils.dispatchShuttle(null, targetLoc.getLocNo(), shuttleNo);
+ }
+
// //璺戝簱绋嬪簭
// public synchronized void moveLoc(Integer shuttleNo) {
// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
index 884a137..264c19c 100644
--- a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java
@@ -14,6 +14,8 @@
TRANSPORT(9, "鎼繍浠诲姟"),
SHUTTLE_CONTROL(10, "灏忚溅绠″埗"),
SHUTTLE_CANCEL_CONTROL(11, "灏忚溅鍙栨秷绠″埗"),
+ SHUTTLE_DEMO_OPEN(12, "婕旂ず妯″紡-寮�"),
+ SHUTTLE_DEMO_CLOSE(13, "婕旂ず妯″紡-鍏�"),
;
public Integer id;
diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
index 9f7b0bd..4cb41ef 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -164,6 +164,11 @@
private Integer yCurrent = 0;
/**
+ * 婕旂ず妯″紡
+ */
+ private Boolean demo = false;
+
+ /**
* 鏃ュ織閲囬泦鏃堕棿
*/
private Long deviceDataLog = System.currentTimeMillis();
@@ -319,6 +324,14 @@
return this.pakMk ? "Y" : "N";
}
+ public String getDemo$() {
+ if (this.demo == null) {
+ return "";
+ }
+
+ return this.demo ? "Y" : "N";
+ }
+
public HashMap<String, Object> getPoint() {
HashMap<String, Object> map = new HashMap<>();
if (this.currentCode == null) {
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 9e243ca..57c4bf6 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -61,6 +61,8 @@
boolean requestWaiting();
+ boolean enableDemo(boolean enable);//婕旂ず妯″紡
+
//***************鑾峰彇鍛戒护*****************
ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes);//鑾峰彇绉诲姩鍛戒护
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index 52f5643..a585d5e 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -120,6 +120,9 @@
// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭
// shuttleAction.moveLoc(slave.getId());
+ //婕旂ず妯″紡
+ shuttleAction.demo(slave.getId());
+
Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
@@ -804,6 +807,12 @@
}
@Override
+ public boolean enableDemo(boolean enable) {
+ shuttleProtocol.setDemo(enable);
+ return true;
+ }
+
+ @Override
public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo);
diff --git a/src/main/webapp/views/shuttle.html b/src/main/webapp/views/shuttle.html
index b559d4f..b23cc49 100644
--- a/src/main/webapp/views/shuttle.html
+++ b/src/main/webapp/views/shuttle.html
@@ -46,6 +46,7 @@
<th>鏁呴殰鐮�</th>
<th>绠″埗鐘舵��</th>
<th>浣庣數閲�</th>
+ <th>婕旂ず妯″紡</th>
</tr>
</thead>
<tbody>
@@ -131,6 +132,8 @@
<button class="item" onclick="shuttleOperator(2)">鎵樼洏涓嬮檷</button>
<button class="item" onclick="shuttleOperator(6)">鍏呯數寮�鍏�</button>
<button class="item" onclick="shuttleOperator(3)">澶嶄綅</button>
+ <button class="item" onclick="shuttleOperator(12)">婕旂ず妯″紡-寮�</button>
+ <button class="item" onclick="shuttleOperator(13)">婕旂ず妯″紡-鍏�</button>
</div>
</div>
</div>
@@ -344,6 +347,7 @@
setVal(tr.children("td").eq(11), table[i-1].statusErrorCode$);
setVal(tr.children("td").eq(12), suspendState);
setVal(tr.children("td").eq(13), table[i-1].lowerPower);
+ setVal(tr.children("td").eq(14), table[i-1].demo$);
}
} else if (res.code === 403){
window.location.href = baseUrl+"/login";
--
Gitblit v1.9.1