From ba77f258c619b296e51cadc0958bff23965dfc6d Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期二, 14 一月 2025 16:10:02 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 5 + src/main/resources/mapper/WrkMastLogMapper.xml | 1 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 7 ++ src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 4 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 14 ++-- src/main/java/com/zy/core/thread/ShuttleThread.java | 2 src/main/java/com/zy/asrs/entity/WrkMast.java | 7 ++ src/main/resources/mapper/WrkMastMapper.xml | 1 src/main/java/com/zy/asrs/entity/WrkMastLog.java | 7 ++ src/main/java/com/zy/asrs/controller/ForkLiftController.java | 6 + src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java | 28 +------- src/main/resources/application.yml | 2 src/main/java/com/zy/core/News.java | 39 ++++++++++++ src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java | 17 +++++ src/main/webapp/views/forklift.html | 21 +++--- 15 files changed, 116 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ForkLiftController.java b/src/main/java/com/zy/asrs/controller/ForkLiftController.java index 95625b5..e37f1aa 100644 --- a/src/main/java/com/zy/asrs/controller/ForkLiftController.java +++ b/src/main/java/com/zy/asrs/controller/ForkLiftController.java @@ -27,6 +27,7 @@ import com.zy.core.model.Task; import com.zy.core.model.command.*; import com.zy.core.model.protocol.ForkLiftProtocol; +import com.zy.core.model.protocol.ForkLiftStaProtocol; import com.zy.core.model.protocol.LiftStaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.ForkLiftThread; @@ -75,6 +76,8 @@ continue; } JSONObject data = JSON.parseObject(JSON.toJSONString(forkLiftProtocol)); + List<ForkLiftStaProtocol> forkLiftStaProtocols = forkLiftThread.getForkLiftStaProtocols(); + data.put("forkLiftStaProtocols", forkLiftStaProtocols); baseObj.putAll(data); } return R.ok().add(list); @@ -99,8 +102,9 @@ continue; } - vo.setWorkNo(forkLiftProtocol.getTaskNo().intValue());//浠诲姟鍙� + vo.setWorkNo(forkLiftProtocol.getTaskNo());//浠诲姟鍙� vo.setPakMk(forkLiftProtocol.getPakMk()?"Y" : "N"); // 浣滀笟鏍囪 + vo.setForkLiftStaProtocols(forkLiftThread.getForkLiftStaProtocols()); } return R.ok().add(list); } diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java index 5c23ee9..a981a72 100644 --- a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java @@ -1,6 +1,9 @@ package com.zy.asrs.domain.vo; +import com.zy.core.model.protocol.ForkLiftStaProtocol; import lombok.Data; + +import java.util.List; @Data public class LiftMsgTableVo { @@ -15,34 +18,13 @@ private String pakMk = "-"; /** - * 浠诲姟鍦板潃 + * 绔欑偣淇℃伅 */ - private Short taskAddress; - - /** - * 鐩殑鍦板潃 - */ - private Short distAddress; - - /** - * 宸插畬鎴愮殑浠诲姟鍙� - */ - private Short completeTaskNo; - - /** - * 灞� - */ - private Short lev; + private List<ForkLiftStaProtocol> forkLiftStaProtocols; /** * 绌挎杞﹀彿 */ private Integer shuttleNo; - - /** - * 浠ょ墝 - */ - private Integer token; - } diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index e475c5d..f32251e 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -161,6 +161,13 @@ @TableField(value = "wms_wrk_no") private String wmsWrkNo; + /** + * 绯荤粺娑堟伅 + */ + @ApiModelProperty(value= "绯荤粺娑堟伅") + @TableField(value = "system_msg") + private String systemMsg; + public String getWrkSts$(){ BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class); BasWrkStatus entity = mapper.selectById(this.wrkSts); diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java index 91844c4..b84f77c 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java +++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java @@ -167,6 +167,13 @@ @TableField(value = "wms_wrk_no") private String wmsWrkNo; + /** + * 绯荤粺娑堟伅 + */ + @ApiModelProperty(value= "绯荤粺娑堟伅") + @TableField(value = "system_msg") + private String systemMsg; + public WrkMastLog() {} public String getWrkSts$(){ 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 1514ae1..a9887dd 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2105,7 +2105,7 @@ //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleThread.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } @@ -2129,7 +2129,7 @@ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo()); if (liftWrkMast != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } @@ -2142,7 +2142,7 @@ //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); if (commands == null) { - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞瑙i攣澶辫触 } @@ -2200,14 +2200,14 @@ return false; } if (!forkLiftThread.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } } @@ -2217,7 +2217,7 @@ //鑾峰彇鐩爣绔� ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); if (sourceLiftSta == null || liftSta == null) { - News.info("{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); return false;//缂哄皯绔欑偣淇℃伅 } @@ -2268,7 +2268,7 @@ //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleThread.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java index 4e09cb9..4c44728 100644 --- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java +++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java @@ -47,6 +47,7 @@ List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null); if (nodeList == null) { News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); + shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo); return null; } @@ -81,6 +82,7 @@ boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startLocNo), shuttleNo, allNode, true);//閿佸畾璺緞 if (!result) { News.error("{} dash {} can't lock path!", startLocNo, endLocNo); + shuttleThread.offerSystemMsg("{} dash {} can't lock path!", startLocNo, endLocNo); return null;//璺緞閿佸畾澶辫触 } return commands; @@ -103,6 +105,7 @@ boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(endLocNo), shuttleProtocol.getShuttleNo(), unlockPath, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� if (!lockResult) { News.error("{} dash {} can't find unlock path!", startLocNo, endLocNo); + shuttleThread.offerSystemMsg("{} dash {} can't find unlock path!", startLocNo, endLocNo); return null;//瑙i攣澶辫触 } @@ -111,6 +114,7 @@ List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null); if (nodeList == null) { News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); + shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo); return null; } diff --git a/src/main/java/com/zy/core/News.java b/src/main/java/com/zy/core/News.java index e5e069e..0934f55 100644 --- a/src/main/java/com/zy/core/News.java +++ b/src/main/java/com/zy/core/News.java @@ -1,5 +1,8 @@ package com.zy.core; +import com.core.common.SpringUtils; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.service.WrkMastService; import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Array; @@ -109,6 +112,21 @@ offer(NewsLevel.ERROR, format, arguments); } + public static void taskInfo(Integer wrkNo, String format, Object... arguments) { + info(format, arguments); + offerTask(wrkNo, format, arguments); + } + + public static void taskWarn(Integer wrkNo, String format, Object... arguments) { + warn(format, arguments); + offerTask(wrkNo, format, arguments); + } + + public static void taskError(Integer wrkNo, String format, Object... arguments) { + error(format, arguments); + offerTask(wrkNo, format, arguments); + } + public static String printStr() { StringBuilder sb = new StringBuilder("["); List<NewsDomain> domains = NEWS_QUEUE.data(); @@ -139,11 +157,30 @@ return res; } + private static boolean offerTask(Integer wrkNo, String msg, Object[] args) { + WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); + if (wrkMastService == null) { + return false; + } + + WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); + if (wrkMast == null) { + return false; + } + String systemMsg = replace(msg, args); + if (systemMsg.equals(wrkMast.getSystemMsg())) { + wrkMast.setSystemMsg(systemMsg); + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + } + return true; + } + private static boolean offer(NewsLevel level, String msg, Object[] args) { return NEWS_QUEUE.offer(new NewsDomain(level, replace(msg, args), (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()))); } - private static String replace(String str, Object[] objs){ + public static String replace(String str, Object[] objs){ if (null == objs || objs.length == 0 || null == str || "".equals(str.trim())) { return str; } else { 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 4cb41ef..b785a03 100644 --- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java @@ -188,6 +188,11 @@ */ private Object extend; + /** + * 绯荤粺娑堟伅 + */ + private String systemMsg; + public String getProtocolStatus$() { if (this.protocolStatusType == null) { return ""; diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 57c4bf6..3ddda33 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -63,6 +63,8 @@ boolean enableDemo(boolean enable);//婕旂ず妯″紡 + boolean offerSystemMsg(String format, Object... arguments); + //***************鑾峰彇鍛戒护***************** 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 a585d5e..79eb4e1 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -813,6 +813,13 @@ } @Override + public boolean offerSystemMsg(String format, Object... arguments) { + String msg = News.replace(format, arguments); + shuttleProtocol.setSystemMsg(msg); + 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/java/com/zy/core/thread/impl/ZyForkLiftThread.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java index 7504b2d..25269ab 100644 --- a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java +++ b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java @@ -170,6 +170,21 @@ OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); } + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB102.0", (short) 8); + if (result2.IsSuccess) { + for (int i = 0; i < this.slave.getSta().size(); i++) { + ForkLiftSlave.Sta sta = this.slave.getSta().get(i); + if (forkLiftStaProtocols.isEmpty()) { + continue; + } + + ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i); + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i * 2, 2); + forkLiftStaProtocol.setHasTray(status1[0]); + forkLiftStaProtocol.setHasCar(status1[1]); + } + } + if (System.currentTimeMillis() - forkLiftProtocol.getDeviceDataLog() > 1000 * 5) { //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� //淇濆瓨鏁版嵁璁板綍 @@ -241,7 +256,7 @@ array[3] = command.getPut();//鏀捐揣鏁版嵁 OperateResult result = siemensS7Net.Write("DB103.0", array); if (result.IsSuccess) { - OperateResult result2 = siemensS7Net.Write("DB103.16", command.getConfirm()); + OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm()); if (result2.IsSuccess) { response.setResult(true); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 35545c5..c53c388 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -144,7 +144,7 @@ port: 102 rack: 0 slot: 0 - staRow: 10 + staRow: 9 staBay: 6 sta[0]: staNo: 101 diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml index eba392f..cdb4eb7 100644 --- a/src/main/resources/mapper/WrkMastLogMapper.xml +++ b/src/main/resources/mapper/WrkMastLogMapper.xml @@ -26,6 +26,7 @@ <result column="lift_no" property="liftNo" /> <result column="shuttle_no" property="shuttleNo" /> <result column="wms_wrk_no" property="wmsWrkNo" /> + <result column="system_msg" property="systemMsg" /> </resultMap> </mapper> diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index f634991..6f14410 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -25,6 +25,7 @@ <result column="shuttle_no" property="shuttleNo" /> <result column="lift_no" property="liftNo" /> <result column="wms_wrk_no" property="wmsWrkNo" /> + <result column="system_msg" property="systemMsg" /> </resultMap> diff --git a/src/main/webapp/views/forklift.html b/src/main/webapp/views/forklift.html index 62f93aa..d9de518 100644 --- a/src/main/webapp/views/forklift.html +++ b/src/main/webapp/views/forklift.html @@ -50,12 +50,8 @@ <tr> <th>鎻愬崌鏈�</th> <th>宸ヤ綔鍙�</th> - <th>浠诲姟鍦板潃</th> - <th>鐩殑鍦板潃</th> - <th>宸插畬鎴愮殑浠诲姟鍙�</th> - <th>灞�</th> + <th>绔欑偣淇℃伅</th> <th>浣滀笟鏍囪</th> - <th>绌挎杞﹀彿</th> </tr> </thead> <tbody> @@ -276,14 +272,17 @@ } for (var i=1;i<=table.length;i++){ var tr = tableEl.find("tr").eq(i); + let staDiv = ""; + table[i-1].forkLiftStaProtocols.forEach((item) => { + let hasTray = item.hasTray ? "Y" : "N"; + let hasCar = item.hasCar ? "Y" : "N"; + staDiv += "<div>" + item.lev + "灞傦紝鎵樼洏锛�" + hasTray + "锛屽皬杞︼細" + hasCar + "</div>" + }) + setVal(tr.children("td").eq(0), table[i-1].liftNo); setVal(tr.children("td").eq(1), table[i-1].workNo); - setVal(tr.children("td").eq(2), table[i-1].taskAddress); - setVal(tr.children("td").eq(3), table[i-1].distAddress); - setVal(tr.children("td").eq(4), table[i-1].completeTaskNo); - setVal(tr.children("td").eq(5), table[i-1].lev); - setVal(tr.children("td").eq(6), table[i-1].pakMk); - setVal(tr.children("td").eq(7), table[i-1].shuttleNo); + setVal(tr.children("td").eq(2), staDiv); + setVal(tr.children("td").eq(3), table[i-1].pakMk); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; -- Gitblit v1.9.1