From 87c4efe93e6fe31a9c989b4aa5cc0c8f559b845d Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 31 三月 2023 16:50:47 +0800 Subject: [PATCH] 提升机代码,四向穿梭车线程优化 --- src/main/java/com/zy/core/thread/ShuttleThread.java | 64 ++++++++++++++++++++----------- 1 files changed, 41 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index db733ce..73613c9 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -10,7 +10,6 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.BasShuttle; import com.zy.asrs.entity.BasShuttleOpt; -import com.zy.asrs.mapper.BasShuttleMapper; import com.zy.asrs.service.BasShuttleOptService; import com.zy.asrs.service.BasShuttleService; import com.zy.common.model.NavigateNode; @@ -168,8 +167,11 @@ shuttleProtocol.setPakMk(true); } - //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟涓旀爣璁颁负true锛岄渶瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� - if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getPakMk()) { + //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� + if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE + && shuttleProtocol.getTaskNo() != 0 + && shuttleProtocol.getPakMk() + && shuttleProtocol.getAssignCommand() != null) { //鎵ц涓嬩竴姝ユ寚浠� executeWork(shuttleProtocol.getAssignCommand()); } @@ -347,19 +349,23 @@ //灏嗘map瀛樺叆redis涓� HashMap<String, Object> map = new HashMap<>(); - //璁$畻璺緞 - List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), assignCommand.getTaskMode().intValue()); - if (calc != null) { - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); - //璺緞鏁版嵁 - map.put("path", data); - //璺緞娆℃暟 - map.put("pathSize", data.size()); - }else { - if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) { - //灞炰簬鍏ュ簱鍑哄簱锛屽繀椤昏璁$畻璺緞锛屽垯鎶涘嚭寮傚父 - throw new Exception("鏈兘鎵惧埌杩愯璺緞"); + if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() + || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) { + //鍏ュ簱鎴栧嚭搴撴ā寮忥紝璁$畻璺緞 + //璁$畻璺緞 + List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), assignCommand.getTaskMode().intValue()); + if (calc != null) { + //鑾峰彇鍒嗘璺緞 + ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); + //璺緞鏁版嵁 + map.put("path", data); + //璺緞娆℃暟 + map.put("pathSize", data.size()); + }else { + if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) { + //灞炰簬鍏ュ簱鍑哄簱锛屽繀椤昏璁$畻璺緞锛屽垯鎶涘嚭寮傚父 + throw new Exception("鏈兘鎵惧埌杩愯璺緞"); + } } } @@ -373,6 +379,7 @@ map.put("assignCommand", assignCommand); shuttleProtocol.setTaskNo(assignCommand.getTaskNo()); shuttleProtocol.setAssignCommand(assignCommand); + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); //浠诲姟鏁版嵁淇濆瓨鍒皉edis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); //鎵ц涓嬪彂浠诲姟 @@ -385,7 +392,14 @@ if (assignCommand == null) { return false; } + + //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) + shuttleProtocol.setPakMk(false); + Object o = redisUtil.get("wrk_no_" + assignCommand.getTaskNo()); + if (o == null) { + return false; + } HashMap map = JSON.parseObject(o.toString(), HashMap.class); //褰撳墠姝ュ簭 int commandStep = Integer.parseInt(map.get("commandStep").toString()); @@ -453,6 +467,8 @@ shuttleProtocol.setTaskNo((short) 0); //鏍囪澶嶄綅 shuttleProtocol.setPakMk(true); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); break; default: } @@ -464,9 +480,6 @@ return false; } else { News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - - //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(false); //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 if (commandStep < size - 1) { @@ -491,17 +504,22 @@ null, null, null, - JSON.toJSONString(command) + JSON.toJSONString(assignCommand) ); shuttleOptService.insert(opt); } //鍒犻櫎redis redisUtil.del("wrk_no_" + map.get("wrk_no").toString()); - //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + if (!assignCommand.getAuto()) { + //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅 + News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + }else { + //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + } - News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); } } -- Gitblit v1.9.1