From d79cdd2c6f3ffa6822b9a15576081c1d87e1d0ba Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 01 八月 2023 13:12:32 +0800 Subject: [PATCH] 出入库调度 --- src/main/java/com/zy/asrs/controller/ShuttleController.java | 188 +++++++++++++++++----------------------------- 1 files changed, 69 insertions(+), 119 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java index 035c9f6..896319a 100644 --- a/src/main/java/com/zy/asrs/controller/ShuttleController.java +++ b/src/main/java/com/zy/asrs/controller/ShuttleController.java @@ -10,14 +10,15 @@ import com.zy.asrs.domain.param.ShuttleOperatorParam; import com.zy.asrs.domain.vo.*; import com.zy.asrs.entity.BasShuttle; -import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; 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.model.NyShuttleOperaResult; import com.zy.common.service.CommonService; -import com.zy.common.utils.NavigatePositionConvert; +import com.zy.common.utils.NyHttpUtils; +import com.zy.common.utils.NyShuttleOperaUtils; import com.zy.common.utils.RedisUtil; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; @@ -25,11 +26,13 @@ import com.zy.core.enums.*; import com.zy.core.model.ShuttleSlave; import com.zy.core.model.Task; +import com.zy.core.model.command.NyShuttleHttpCommand; import com.zy.core.model.command.ShuttleAssignCommand; -import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.command.ShuttleRedisCommand; +import com.zy.core.model.protocol.NyShuttleProtocol; import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.NyShuttleThread; import com.zy.core.thread.ShuttleThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -61,73 +64,20 @@ @PostMapping("/table/shuttle/state") @ManagerAuth(memo = "鍥涘悜绌挎杞︿俊鎭〃") - public R steStateTable(){ - List<ShuttleStateTableVo> list = new ArrayList<>(); + public R shuttleStateTable(){ + ArrayList<NyShuttleProtocol> list = new ArrayList<>(); List<BasShuttle> shuttles = basShuttleService.selectList(new EntityWrapper<BasShuttle>().orderBy("shuttle_no")); for (BasShuttle basShuttle : shuttles) { - // 琛ㄦ牸琛� - ShuttleStateTableVo vo = new ShuttleStateTableVo(); - vo.setShuttleNo(basShuttle.getShuttleNo()); //鍥涘悜绌挎杞﹀彿 - list.add(vo); // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, basShuttle.getShuttleNo()); + NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, basShuttle.getShuttleNo()); if (shuttleThread == null) { - vo.setStatus(ShuttleProtocolStatusType.OFFLINE.id);//璁惧绂荤嚎 - vo.setBusyStatus(ShuttleProtocolStatusType.OFFLINE.desc); continue; } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) { continue; } - vo.setTaskNo(shuttleProtocol.getTaskNo().intValue()); // 浠诲姟鍙� - vo.setBusyStatus(shuttleProtocol.getBusyStatusType().desc); //鍥涘悜绌挎杞︾姸鎬� - vo.setStatus(shuttleProtocol.getProtocolStatusType().id);//褰撳墠浠诲姟鐘舵�� - vo.setCurrentCode(shuttleProtocol.getCurrentCode());//褰撳墠浜岀淮鐮� - LocMast currentLocMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); - if (currentLocMast == null) { - vo.setLocNo("");//鑾峰彇褰撳墠搴撲綅鍙� - vo.setLocNoX(0); - vo.setLocNoY(0); - vo.setLocNoLev(0);//褰撳墠搴撲綅灞傞珮 - }else { - vo.setLocNo(currentLocMast.getLocNo());//鑾峰彇褰撳墠搴撲綅鍙� - int[] locNoXY = NavigatePositionConvert.positionToXY(currentLocMast.getLocNo());//鑾峰彇搴撲綅鍙稾Y鍧愭爣 - vo.setLocNoX(locNoXY[0]); - vo.setLocNoY(locNoXY[1]); - vo.setLocNoLev(Utils.getLev(currentLocMast.getLocNo()));//褰撳墠搴撲綅灞傞珮 - } - vo.setBatteryPower(shuttleProtocol.getBatteryPower$() == null ? "" : shuttleProtocol.getBatteryPower$() + "%");//鐢垫睜鐢甸噺 - vo.setBatteryTemp(shuttleProtocol.getBatteryTemp$() == null ? "" : shuttleProtocol.getBatteryTemp$() + "掳");//鐢垫睜娓╁害 - if (!Cools.isEmpty(shuttleProtocol.getErrorCode())) { - vo.setErrorCode(shuttleProtocol.getErrorCodeType());//閿欒缂栧彿 - } - vo.setPlcOutputStatusIO(shuttleProtocol.getPlcOutputStatusIO());//Plc杈撳嚭鐘舵�両O - if (!Cools.isEmpty(shuttleProtocol.getPlcOutputLift())) { - vo.setPlcOutputLift(shuttleProtocol.getPlcOutputLift()); - } - if (!Cools.isEmpty(shuttleProtocol.getPlcOutputTransfer())) { - vo.setPlcOutputTransfer(shuttleProtocol.getPlcOutputTransfer()); - } - if (!Cools.isEmpty(shuttleProtocol.getPlcOutputBrake())) { - vo.setPlcOutputBrake(shuttleProtocol.getPlcOutputBrake()); - } - if (!Cools.isEmpty(shuttleProtocol.getPlcOutputCharge())) { - vo.setPlcOutputCharge(shuttleProtocol.getPlcOutputCharge()); - } - if (!Cools.isEmpty(shuttleProtocol.getStatusErrorCode())) { - vo.setStatusErrorCode(shuttleProtocol.getStatusErrorCode$());//閿欒淇℃伅鐮� - } - vo.setPlcInputStatus(shuttleProtocol.getPlcInputStatus());//PLC杈撳叆鐘舵�� - vo.setCurrentOrBeforeCode(shuttleProtocol.getCurrentOrBeforeCode());//褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� - vo.setCodeOffsetX(shuttleProtocol.getCodeOffsetX());//璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� - vo.setCodeOffsetY(shuttleProtocol.getCodeOffsetY());//璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� - vo.setCurrentVoltage(shuttleProtocol.getCurrentVoltage());//褰撳墠鐨勭數鍘嬪�� - vo.setCurrentAnalogValue(shuttleProtocol.getCurrentAnalogValue());//褰撳墠鐨勬ā鎷熼噺鍊� - vo.setCurrentLiftServoSpeed(shuttleProtocol.getCurrentLiftServoSpeed());//褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 - vo.setCurrentMoveServoSpeed(shuttleProtocol.getCurrentMoveServoSpeed());//褰撳墠鐨勮璧颁己鏈嶉�熷害 - vo.setCurrentLiftServoLoad(shuttleProtocol.getCurrentLiftServoLoad());//褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 - vo.setCurrentMoveServoLoad(shuttleProtocol.getCurrentMoveServoLoad());//褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 + list.add(shuttleProtocol); } return R.ok().add(list); } @@ -177,7 +127,7 @@ vo.setPakMk(shuttleProtocol.getPakMk()?"Y" : "N"); // 浣滀笟鏍囪 vo.setLocNo(shuttleProtocol.getLocNo());//鍥涘悜绌挎杞﹀綋鍓嶅簱浣嶅彿 vo.setLev(shuttleProtocol.getLocNo() == null ? 0 : Utils.getLev(shuttleProtocol.getLocNo()));//鍥涘悜绌挎杞﹀綋鍓嶅眰楂� - vo.setRunSpeed(basShuttle.getRunSpeed());//鍥涘悜绌挎杞﹁繍琛岄�熷害(璁剧疆) +// vo.setRunSpeed(basShuttle.getRunSpeed());//鍥涘悜绌挎杞﹁繍琛岄�熷害(璁剧疆) vo.setChargeLine(basShuttle.getChargeLine());//鍏呯數闃堝�� } return R.ok().add(list); @@ -200,51 +150,6 @@ i++; } return R.ok().add(str.toString()); - } - - @GetMapping("/detl/{shuttleNo}") - public R steDetl(@PathVariable("shuttleNo") Integer shuttleNo){ - ShuttleDataVo vo = new ShuttleDataVo(); - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { - if (shuttleNo.equals(shuttleSlave.getId())) { - vo.setShuttleNo(shuttleSlave.getId()); - BasShuttle basShuttle = basShuttleService.selectById(shuttleSlave.getId()); - if (!Cools.isEmpty(basShuttle)) { - vo.setWorkNo(basShuttle.getWrkNo()); - vo.setPakMk(basShuttle.getPakMk()); - } - break; - } - } - return R.ok().add(vo); - } - - @GetMapping("/sensor/detl/{shuttleNo}") - public R shuttleSensorDetl(@PathVariable("shuttleNo") Integer shuttleNo){ - ShuttleSensorDataVo vo = new ShuttleSensorDataVo(); - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { - if (shuttleNo.equals(shuttleSlave.getId())) { - vo.setShuttleNo(shuttleSlave.getId()); - // 鑾峰彇绌挎杞︿俊鎭� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); - if (shuttleThread == null) { - return R.error("璁惧涓嶅湪绾�"); - } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return R.error("璁惧涓嶅湪绾�"); - } - - // 绌挎杞﹀紓甯� ----------- - - // 绌挎杞︽彁绀轰俊鎭� ---------------------- - - // 鐘舵�佷俊鎭� ------------- - - break; - } - } - return R.ok().add(vo); } @RequestMapping(value = "/command/query") @@ -282,8 +187,8 @@ } ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); - List<ShuttleCommand> commands = assignCommand.getCommands(); - ShuttleCommand command = commands.get(commandStep); + List<NyShuttleHttpCommand> commands = assignCommand.getCommands(); + NyShuttleHttpCommand command = commands.get(commandStep); command.setComplete(complete != 0); redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); return R.ok(); @@ -298,11 +203,11 @@ } ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); Short shuttleNo = redisCommand.getShuttleNo(); - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); + NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); if (shuttleThread == null) { return R.error(); } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); if (shuttleProtocol == null) { return R.error(); } @@ -310,7 +215,7 @@ return R.error(); } //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - shuttleProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� + shuttleProtocol.setTaskNo(redisCommand.getWrkNo().intValue());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� return R.ok(); } @@ -349,11 +254,11 @@ for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { if (param.getShuttleNo().equals(shuttleSlave.getId())) { - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); + NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); if (shuttleThread == null) { throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); if (shuttleProtocol == null) { throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); } @@ -363,6 +268,52 @@ assignCommand.setTaskMode(shuttleTaskModeType.id.shortValue()); assignCommand.setTaskNo((short) commonService.getWorkNo(3));//鑾峰彇浠诲姟鍙� assignCommand.setAuto(false);//鎵嬪姩妯″紡 + + if (shuttleTaskModeType == ShuttleTaskModeType.TRANSPORT) { + //鎼繍璐х墿浠诲姟 + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getSourceLocNo(), param.getDistLocNo()); + if (result == null) { + throw new CoolException("璺緞璁$畻澶辫触"); + } + + assignCommand.setCommands(result.getCommands()); + assignCommand.setNodes(result.getNodes()); + } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) { + //绉诲姩鍒扮洰鏍囧簱浣� + NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getDistLocNo()); + if (result == null) { + throw new CoolException("璺緞璁$畻澶辫触"); + } + + assignCommand.setCommands(result.getCommands()); + assignCommand.setNodes(result.getNodes()); + } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) { + //鎵樼洏椤跺崌 + NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); + ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); + commands.add(command); + assignCommand.setCommands(commands); + } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) { + //鎵樼洏涓嬮檷 + NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); + ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); + commands.add(command); + assignCommand.setCommands(commands); + } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) { + //鍏呯數寮�鍏� + NyShuttleHttpCommand command = NyHttpUtils.getChargeCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); + ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); + commands.add(command); + assignCommand.setCommands(commands); + } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) { + //澶嶄綅 + shuttleProtocol.setTaskNo(0);//宸ヤ綔鍙锋竻绌� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽 + shuttleProtocol.setPakMk(true);//浣滀笟鏍囪澶嶄綅 + return R.ok(); + } else { + throw new CoolException("鏈煡鍛戒护"); + } if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, assignCommand))) { return R.ok(); @@ -377,13 +328,13 @@ @PostMapping("/detl/update") @ManagerAuth(memo = "淇敼鏁版嵁") public R shuttleUpdate(@RequestParam Integer shuttleNo, - @RequestParam Short workNo, + @RequestParam Integer workNo, @RequestParam String pakMk){ - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { return R.error("plc宸叉帀绾�"); } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); if (shuttleProtocol == null) { return R.error("plc宸叉帀绾�"); } @@ -399,12 +350,11 @@ @PostMapping("/runSpeed/{shuttleNo}") @ManagerAuth public R setRunSpeed(@PathVariable("shuttleNo") String shuttleNo, @RequestParam("runSpeed") Integer runSpeed, @RequestParam("chargeLine") Integer chargeLine) { - BasShuttle basShuttle = basShuttleService.selectById(shuttleNo); if (basShuttle == null) { return R.error("鍥涘悜绌挎杞︿笉瀛樺湪"); } - basShuttle.setRunSpeed(runSpeed); +// basShuttle.setRunSpeed(runSpeed); basShuttle.setChargeLine(chargeLine); if (!basShuttleService.updateById(basShuttle)) { return R.error(); -- Gitblit v1.9.1