From 0f69561e397093b5165c4aac58530721d5c62178 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 25 十一月 2024 11:03:16 +0800 Subject: [PATCH] #led --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java | 109 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 90 insertions(+), 19 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java index 49dbbc6..1946db0 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java @@ -1,20 +1,27 @@ package com.zy.asrs.wcs.core.action; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.asrs.wcs.core.entity.Task; import com.zy.asrs.wcs.core.model.command.*; import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType; +import com.zy.asrs.wcs.core.service.TaskService; import com.zy.asrs.wcs.core.utils.RedisUtil; import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant; +import com.zy.asrs.wcs.rcs.entity.BasLiftOpt; import com.zy.asrs.wcs.rcs.entity.Device; -import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType; +import com.zy.asrs.wcs.rcs.model.CommandResponse; +import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol; +import com.zy.asrs.wcs.rcs.service.BasLiftOptService; import com.zy.asrs.wcs.rcs.thread.LiftThread; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; @Component @@ -22,6 +29,10 @@ @Autowired private RedisUtil redisUtil; + @Autowired + private TaskService taskService; + @Autowired + private BasLiftOptService basLiftOptService; public synchronized boolean assignWork(Device device, LiftAssignCommand assignCommand) { LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getId().intValue()); @@ -53,6 +64,11 @@ return false; } + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, taskNo)); + if (task == null) { + return false; + } + LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class); if (redisCommand == null) { return false; @@ -69,7 +85,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� - if (!liftThread.isIdle()) { + if (!liftThread.isDeviceIdle()) { return false; } @@ -83,22 +99,53 @@ if (commandStep != 0) { LiftCommand command = commands.get(commandStep - 1); + if (command.getMode() == LiftCommandModeType.MOVE.id) { + //鎻愬崌鏈哄崌闄� + if (liftProtocol.getLev() == command.getTargetLev()) { + command.setComplete(true); + } + } else if (command.getMode() == LiftCommandModeType.MOVE_CAR.id) { + //鎻愬崌鏈哄崌闄嶅皬杞� + if (liftProtocol.getLev() == command.getTargetLev()) { + command.setComplete(true); + } + } else if (command.getMode() == LiftCommandModeType.PALLET_INOUT.id) { + //鎵樼洏鍑哄叆 + if (liftProtocol.getLev() == command.getTargetLev()) { + command.setComplete(true); + } - //鐩墠娌℃湁鍒ゆ柇锛岀洿鎺ュ垽瀹氫笂涓�鏉℃寚浠ゅ畬鎴� - command.setComplete(true); + //鍒ゆ柇鎻愬崌鏈烘墭鐩樻槸鍚﹀瓨鍦� + if (liftProtocol.getHasTray()) { + return false; + } + + } else if (command.getMode() == LiftCommandModeType.RESET.id) { + //澶嶄綅 + command.setComplete(true); + } else if (command.getMode() == LiftCommandModeType.LOCK.id) { + //閿佸畾 + command.setComplete(true); + } else if (command.getMode() == LiftCommandModeType.UNLOCK.id) { + //瑙i攣 + command.setComplete(true); + } // 鏇存柊redis鏁版嵁 - redisUtil.set(DeviceRedisConstant.LIFT_WORK_FLAG + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + redisUtil.set(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo, JSON.toJSONString(redisCommand)); if (!command.getComplete()) { return false; } - //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� LiftCommand endCommand = commands.get(commands.size() - 1); if (endCommand.getComplete()) { News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", liftProtocol.getLiftNo(), JSON.toJSON(commands)); + + //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting + liftThread.setProtocolStatus(LiftProtocolStatusType.WAITING); + redisUtil.del(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo); return false;//绂佹鍐嶄笅鍙戝懡浠� } } @@ -106,42 +153,66 @@ //鍙栧嚭鍛戒护 LiftCommand command = commands.get(commandStep); - boolean result = write(command, device); - if (!result) { + // 涓嬪彂鍛戒护 + CommandResponse response = write(command, device); + + //淇濆瓨鍛戒护鏃ュ織 + BasLiftOpt basLiftOpt = new BasLiftOpt(); + basLiftOpt.setTaskNo(taskNo); + basLiftOpt.setLiftNo(liftProtocol.getLiftNo()); + basLiftOpt.setMode(LiftCommandModeType.get(command.getMode()).desc); + basLiftOpt.setCommand(JSON.toJSONString(command)); + basLiftOpt.setSystemStatus(JSON.toJSONString(liftProtocol)); + basLiftOpt.setDeviceId(device.getId()); + basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo())); + basLiftOpt.setResponse(response.getMessage());//鑾峰彇鍝嶅簲 + basLiftOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿 + basLiftOpt.setSend(response.getResult() ? 1 : 0); + basLiftOpt.setHostId(device.getHostId()); + //淇濆瓨鍛戒护娴佹按 + basLiftOptService.save(basLiftOpt); + + if (!response.getResult()) { News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); return false; } else { News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); } - redisUtil.del(DeviceRedisConstant.LIFT_WORK_FLAG + command.getTaskNo()); + liftThread.setProtocolStatus(LiftProtocolStatusType.WORKING); + commandStep++; + //鏇存柊redis鏁版嵁 + redisCommand.setCommandStep(commandStep); + // 鏇存柊redis鏁版嵁 + redisUtil.set(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo, JSON.toJSONString(redisCommand)); return true; } - private synchronized boolean write(LiftCommand command, Device device) { + private synchronized CommandResponse write(LiftCommand command, Device device) { + CommandResponse response = new CommandResponse(false); if (null == command) { News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); - return false; + response.setMessage("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); + return response; } LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getId().intValue()); if (liftThread == null) { - return false; + return response; } - boolean result = false; if (command.getMode() == LiftCommandModeType.MOVE.id) { - result = liftThread.move(command); + response = liftThread.move(command); } else if (command.getMode() == LiftCommandModeType.PALLET_INOUT.id) { - result = liftThread.palletInOut(command); + response = liftThread.palletInOut(command); } else if (command.getMode() == LiftCommandModeType.LOCK.id) { - result = liftThread.lock(command); + response = liftThread.lock(command); } else if (command.getMode() == LiftCommandModeType.UNLOCK.id) { - result = liftThread.unlock(command); + response = liftThread.unlock(command); } else if (command.getMode() == LiftCommandModeType.RESET.id) { - result = liftThread.reset(command); + response = liftThread.reset(command); } - return result; + return response; } } -- Gitblit v1.9.1