src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/config/RedisConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/utils/RedisUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/LiftRedisCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/LiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/ShuttleThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -606,6 +606,56 @@ } } /** * 从redis中重启任务 */ public synchronized void restartTaskFromRedis() { HashMap<Object, Object> map = redisUtil.getRedis(); for (Object key : map.keySet()) { if (key.toString().contains("lift_wrk_no_")) {//提升机任务 LiftRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), LiftRedisCommand.class); if (redisCommand == null) { continue; } Short liftNo = redisCommand.getLiftNo(); LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo.intValue()); if (liftThread == null) { continue; } LiftProtocol liftProtocol = liftThread.getLiftProtocol(); if (!liftProtocol.isIdle()) { continue; } //提升机处于空闲状态,进行任务的恢复 liftProtocol.setTaskNo(redisCommand.getWrkNo());//将提升机线程分配任务号 liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//工作状态 liftProtocol.setLiftLock(true);//提升机锁定 }else {//四向穿梭车任务 ShuttleRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), ShuttleRedisCommand.class); if (redisCommand == null) { continue; } Short shuttleNo = redisCommand.getShuttleNo(); ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); if (!shuttleProtocol.isIdle()) { continue; } //四向穿梭车处于空闲状态,进行任务的恢复 shuttleProtocol.setTaskNo(redisCommand.getWrkNo());//将四向穿梭车线程分配任务号 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//工作状态 } } } /** * 入库 ===>> 四向穿梭车入库作业下发 src/main/java/com/zy/common/config/RedisConfig.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; @@ -14,7 +15,7 @@ * Redis配置类 * Created by vincent on 2019-12-23 */ //@Configuration @Configuration //@EnableCaching // 开启数据缓存机制 public class RedisConfig extends CachingConfigurerSupport { src/main/java/com/zy/common/utils/RedisUtil.java
@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -101,6 +102,21 @@ } /** * 获取全部数据 * @return */ public HashMap<Object, Object> getRedis() { Set<String> keys = redisTemplate.keys("*"); HashMap<Object, Object> map = new HashMap<>(); for (String key : keys) { Object value = redisTemplate.opsForValue().get(key); map.put(key, value); } return map;//返回全部数据集合 } /** * 普通缓存放入 * * @param key 键 src/main/java/com/zy/core/MainProcess.java
@@ -51,12 +51,14 @@ // 间隔 Thread.sleep(500); // 拣料、并板、盘点再入库 mainService.stnToCrnStnPick(); // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 入出库 ===>> 堆垛机入出库作业下发 mainService.crnIoExecute(); //从redis中重启任务 mainService.restartTaskFromRedis(); // // 拣料、并板、盘点再入库 // mainService.stnToCrnStnPick(); // // 出库 ===>> 堆垛机出库站到出库站 // mainService.crnStnToOutStn(); // // 入出库 ===>> 堆垛机入出库作业下发 // mainService.crnIoExecute(); // 入库 ===>> 四向穿梭车入库作业下发 mainService.shuttleIoInExecute(); // 出库 ===>> 四向穿梭车出库作业下发 @@ -67,10 +69,10 @@ mainService.liftIoExecute(); //提升机任务完成 mainService.liftFinished(); // 入库 ===>> 执行堆垛机对工作档的完成操作 mainService.storeFinished(); // 入库 ===>> 执行穿梭车对工作档的完成操作 mainService.carGenerateStore(); // // 入库 ===>> 执行堆垛机对工作档的完成操作 // mainService.storeFinished(); // // 入库 ===>> 执行穿梭车对工作档的完成操作 // mainService.carGenerateStore(); // 异常信息记录 mainService.recErr(); // 入库 ===>> 空栈板初始化入库,叉车入库站放货 @@ -82,9 +84,9 @@ // 穿梭车 ===>> 小车电量检测充电 mainService.loopShuttleCharge(); mainService.executeShuttleCharge(); // 穿梭车 ===>> 小车电量检测充电 mainService.loopSteCharge(); mainService.executeSteCharge(); // // 穿梭车 ===>> 小车电量检测充电 // mainService.loopSteCharge(); // mainService.executeSteCharge(); //出入库模式 i++; if (i > 1) { src/main/java/com/zy/core/model/command/LiftRedisCommand.java
New file @@ -0,0 +1,20 @@ package com.zy.core.model.command; import lombok.Data; @Data public class LiftRedisCommand { //提升机号 private Short liftNo; //工作号 private Short wrkNo; //命令执行步序 private Integer commandStep; //命令 private LiftAssignCommand assignCommand; } src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java
New file @@ -0,0 +1,29 @@ package com.zy.core.model.command; import lombok.Data; import java.io.Serializable; import java.util.List; @Data public class ShuttleRedisCommand implements Serializable { //四向穿梭车号 private Short shuttleNo; //工作号 private Short wrkNo; //命令执行步序 private Integer commandStep; //命令 private ShuttleAssignCommand assignCommand; //发生错误时尝试执行的指令,优先级最高 private List<ShuttleCommand> errorCommands; //提升机安全锁定标记 private Boolean liftSecurityMk = false; } src/main/java/com/zy/core/thread/LiftThread.java
@@ -26,10 +26,7 @@ import com.zy.core.enums.*; import com.zy.core.model.LiftSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LiftAssignCommand; import com.zy.core.model.command.LiftCommand; import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.command.*; import com.zy.core.model.protocol.LiftProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -37,7 +34,6 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; /** @@ -185,10 +181,9 @@ && !liftProtocol.getRunning() && liftProtocol.getReady() && liftProtocol.getPakMk() && liftProtocol.getTaskNo() != 0 && liftProtocol.getAssignCommand() != null) { && liftProtocol.getTaskNo() != 0) { //还有未完成的命令 executeWork(liftProtocol.getAssignCommand()); executeWork(liftProtocol.getTaskNo()); } //将提升机状态保存至数据库 @@ -290,9 +285,6 @@ //分配任务 private void assignWork(LiftAssignCommand assignCommand) { //将此map存入redis中 HashMap<String, Object> map = new HashMap<>(); //手动模式指令 if (!assignCommand.getAuto()) { LiftCommand command = new LiftCommand(); @@ -328,42 +320,40 @@ assignCommand.setCommands(commands); } //提升机号 map.put("lift_no", assignCommand.getLiftNo()); //工作号 map.put("wrk_no", assignCommand.getTaskNo()); //命令执行步序 map.put("commandStep", 0); //命令 map.put("assignCommand", assignCommand); LiftRedisCommand redisCommand = new LiftRedisCommand(); redisCommand.setLiftNo(assignCommand.getLiftNo());//提升机号 redisCommand.setWrkNo(assignCommand.getTaskNo());//工作号 redisCommand.setCommandStep(0);//命令执行步序 redisCommand.setAssignCommand(assignCommand);//命令 //任务数据保存到redis redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); liftProtocol.setAssignCommand(assignCommand); liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); //执行下发任务 executeWork(assignCommand); executeWork(assignCommand.getTaskNo()); } //执行任务 private boolean executeWork(LiftAssignCommand assignCommand) { private boolean executeWork(Short wrkNo) { //读取redis数据 if (assignCommand == null) { if (wrkNo == null) { return false; } //将标记置为false(防止重发) liftProtocol.setPakMk(false); Object o = redisUtil.get("lift_wrk_no_" + assignCommand.getTaskNo()); Object o = redisUtil.get("lift_wrk_no_" + wrkNo); if (o == null) { return false; } HashMap map = JSON.parseObject(o.toString(), HashMap.class); List<LiftCommand> commands = assignCommand.getCommands(); LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); List<LiftCommand> commands = redisCommand.getAssignCommand().getCommands(); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //总步序 int size = commands.size(); LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); //取出命令 LiftCommand command = commands.get(commandStep); @@ -379,17 +369,17 @@ //更新redis数据 //步序增加 commandStep++; map.put("commandStep", commandStep); redisCommand.setCommandStep(commandStep); //任务数据保存到redis redisUtil.set("lift_wrk_no_" + map.get("wrk_no").toString(), JSON.toJSONString(map)); redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); }else { //已执行完成 //保存数据到数据库做流水 BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class); if (liftOptService != null) { BasLiftOpt opt = new BasLiftOpt( assignCommand.getTaskNo().intValue(), assignCommand.getLiftNo().intValue(), redisCommand.getWrkNo().intValue(), redisCommand.getLiftNo().intValue(), new Date(), null, null, @@ -399,7 +389,7 @@ liftOptService.insert(opt); } //删除redis redisUtil.del("lift_wrk_no_" + map.get("wrk_no").toString()); redisUtil.del("lift_wrk_no_" + redisCommand.getWrkNo()); if (assignCommand.getAuto()) { //对主线程抛出等待确认状态waiting @@ -407,13 +397,11 @@ News.info("提升机任务执行完成等待确认中,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); }else { //手动模式不抛出等待状态 if (assignCommand.getTaskMode() == 5) { liftProtocol.setTaskNo((short) 0); liftProtocol.setShuttleNo((short) 0); liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); liftProtocol.setPakMk(true); liftProtocol.setSecurityMk(false); } liftProtocol.setTaskNo((short) 0); liftProtocol.setShuttleNo((short) 0); liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); liftProtocol.setPakMk(true); liftProtocol.setSecurityMk(false); News.info("提升机手动任务执行完成,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); } src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -29,10 +29,7 @@ import com.zy.core.enums.*; import com.zy.core.model.ShuttleSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LiftAssignCommand; import com.zy.core.model.command.LiftCommand; import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.command.*; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.ShuttleProtocol; import lombok.Data; @@ -41,7 +38,6 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; /** @@ -187,32 +183,29 @@ if(shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.FIXING && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getAssignCommand() != null){ && shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE){ //处于故障修复状态 //执行下一步指令 executeWork(shuttleProtocol.getAssignCommand()); executeWork(shuttleProtocol.getTaskNo()); } //四向穿梭车空闲、有任务、标记为true、存在任务指令,需要执行任务的下一条指令 if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getPakMk() && shuttleProtocol.getAssignCommand() != null) { && shuttleProtocol.getPakMk()) { //执行下一步指令 executeWork(shuttleProtocol.getAssignCommand()); executeWork(shuttleProtocol.getTaskNo()); } //检测是否有提升机锁定标记,有则检测提升机是否到位,是否能走下一步命令 if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getAssignCommand() != null) { Object o = redisUtil.get("wrk_no_" + shuttleProtocol.getAssignCommand().getTaskNo()); && shuttleProtocol.getTaskNo() != 0) { Object o = redisUtil.get("wrk_no_" + shuttleProtocol.getTaskNo()); if (o != null) { HashMap map = JSON.parseObject(o.toString(), HashMap.class); if (map.containsKey("liftSecurityMk") && Boolean.parseBoolean(map.get("liftSecurityMk").toString())) { ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); if (redisCommand.getLiftSecurityMk()) { //执行下一步指令 executeWork(shuttleProtocol.getAssignCommand()); executeWork(shuttleProtocol.getTaskNo()); } } } @@ -400,8 +393,6 @@ //分配任务 private void assignWork(ShuttleAssignCommand assignCommand) { //将此map存入redis中 HashMap<String, Object> map = new HashMap<>(); if (!assignCommand.getAuto()) { List<ShuttleCommand> commands = new ArrayList<>(); ShuttleCommand command = new ShuttleCommand(); @@ -637,46 +628,42 @@ assignCommand.setCommands(commands); } //四向穿梭车号 map.put("shuttle_no", assignCommand.getShuttleNo()); //工作号 map.put("wrk_no", assignCommand.getTaskNo()); //命令执行步序 map.put("commandStep", 0); //命令 map.put("assignCommand", assignCommand); //发生错误时尝试执行的指令,优先级最高 map.put("errorCommands", new ArrayList<ShuttleCommand>()); ShuttleRedisCommand redisCommand = new ShuttleRedisCommand(); redisCommand.setShuttleNo(assignCommand.getShuttleNo());//四向穿梭车号 redisCommand.setWrkNo(assignCommand.getTaskNo());//工作号 redisCommand.setCommandStep(0);//命令执行步序 redisCommand.setAssignCommand(assignCommand);//命令 redisCommand.setErrorCommands(new ArrayList<ShuttleCommand>());//发生错误时尝试执行的指令,优先级最高 shuttleProtocol.setTaskNo(assignCommand.getTaskNo()); shuttleProtocol.setAssignCommand(assignCommand); shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); //任务数据保存到redis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); //执行下发任务 executeWork(assignCommand); executeWork(assignCommand.getTaskNo()); } //执行下发的指令 private boolean executeWork(ShuttleAssignCommand assignCommand) { private boolean executeWork(Short wrkNo) { //读取redis数据 if (assignCommand == null) { if (wrkNo == null) { return false; } Object o = redisUtil.get("wrk_no_" + assignCommand.getTaskNo()); Object o = redisUtil.get("wrk_no_" + wrkNo); if (o == null) { return false; } HashMap map = JSON.parseObject(o.toString(), HashMap.class); ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); if (!checkLiftStation(assignCommand)) {//检测是否有提升机站点,有则调度提升机 if (!checkLiftStation(wrkNo)) {//检测是否有提升机站点,有则调度提升机 return false; } //将标记置为false(防止重发) shuttleProtocol.setPakMk(false); List<ShuttleCommand> errorCommands = JSON.parseArray(map.get("errorCommands").toString(),ShuttleCommand.class); List<ShuttleCommand> errorCommands = redisCommand.getErrorCommands(); if (errorCommands.size() > 0) { //优先执行该指令 ShuttleCommand errorCommand = errorCommands.get(0);//取出指令 @@ -688,15 +675,15 @@ if (shuttleProtocol.getCurrentCode().equals(errorCommand.getStartCodeNum())) { //起点和终点属于同一库位,无需再执行移动操作 errorCommands.remove(0);//移除该命令 map.put("errorCommands", new ArrayList<ShuttleCommand>()); redisCommand.setErrorCommands(new ArrayList<ShuttleCommand>()); shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //步序回退 commandStep--; map.put("commandStep", commandStep); redisCommand.setCommandStep(commandStep); //任务数据保存到redis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); shuttleProtocol.setPakMk(true); return true; }else { @@ -730,10 +717,10 @@ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //步序回退 commandStep--; map.put("commandStep", commandStep); redisCommand.setCommandStep(commandStep); } if (!write(errorCommand)) { @@ -742,18 +729,19 @@ } else { News.info("四向穿梭车命令下发成功,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(errorCommand)); errorCommands.remove(0); map.put("errorCommands", errorCommands); redisCommand.setErrorCommands(errorCommands); //任务数据保存到redis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); return true; } } List<ShuttleCommand> commands = assignCommand.getCommands(); List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //path路径数目 int size = commands.size(); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); //取出命令 ShuttleCommand command = commands.get(commandStep); @@ -779,9 +767,9 @@ //更新redis数据 //步序增加 commandStep++; map.put("commandStep", commandStep); redisCommand.setCommandStep(commandStep); //任务数据保存到redis redisUtil.set("wrk_no_" + map.get("wrk_no").toString(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); }else { //已执行完成 //保存数据到数据库做流水 @@ -802,7 +790,7 @@ shuttleOptService.insert(opt); } if (map.containsKey("liftSecurityMk") && Boolean.parseBoolean(map.get("liftSecurityMk").toString())) { if (redisCommand.getLiftSecurityMk()) { //曾锁定过提升机,需要进行解锁 LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); LiftProtocol liftProtocol = liftThread.getLiftProtocol(); @@ -812,20 +800,16 @@ } //删除redis redisUtil.del("wrk_no_" + map.get("wrk_no").toString()); redisUtil.del("wrk_no_" + redisCommand.getWrkNo()); if (!assignCommand.getAuto()) { //手动模式不抛出等待状态,直接复位 if (assignCommand.getTaskMode() == 9) { //设置四向穿梭车为空闲状态 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //任务号清零 shuttleProtocol.setTaskNo((short) 0); //标记复位 shuttleProtocol.setPakMk(true); //任务指令清零 shuttleProtocol.setAssignCommand(null); } //设置四向穿梭车为空闲状态 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //任务号清零 shuttleProtocol.setTaskNo((short) 0); //标记复位 shuttleProtocol.setPakMk(true); News.info("四向穿梭车手动任务执行完成,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); }else { if (!assignCommand.getCharge()) { @@ -846,22 +830,22 @@ /** * 检测是否有提升机站点,有则调度提升机 */ private boolean checkLiftStation(ShuttleAssignCommand assignCommand) { private boolean checkLiftStation(Short wrkNo) { //读取redis数据 if (assignCommand == null) { if (wrkNo == null) { return false; } Object o = redisUtil.get("wrk_no_" + assignCommand.getTaskNo()); Object o = redisUtil.get("wrk_no_" + wrkNo); if (o == null) { return false; } HashMap map = JSON.parseObject(o.toString(), HashMap.class); ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //检测是否存在提升机口的指令 List<ShuttleCommand> commands = assignCommand.getCommands(); List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); ArrayList<Short> qrCodeValues = new ArrayList<>(); for (BasDevp basDevp : basDevpService.selectList(null)) { @@ -939,9 +923,9 @@ liftProtocol.setShuttleNo(shuttleProtocol.getShuttleNo());//设置四向穿梭车号 liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//设置提升机状态为工作中 liftProtocol.setSecurityMk(true);//标记置为true,防止其他任务占用当前提升机 map.put("liftSecurityMk", true);//标记置为true,防止其他任务占用当前提升机 redisCommand.setLiftSecurityMk(true);//标记置为true,防止其他任务占用当前提升机 //任务数据保存到redis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); //命令list ArrayList<LiftCommand> liftCommands = new ArrayList<>(); @@ -977,10 +961,10 @@ return false; } HashMap map = JSON.parseObject(o.toString(), HashMap.class); ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); List<ShuttleCommand> commands = assignCommand.getCommands(); //当前步序 int commandStep = Integer.parseInt(map.get("commandStep").toString()); int commandStep = redisCommand.getCommandStep(); //path路径数目 int size = commands.size(); @@ -1041,9 +1025,9 @@ moveCommand.setStartCodeNum(command.getStartCodeNum());//存入目标库位号 list.add(moveCommand); map.put("errorCommands", list); redisCommand.setErrorCommands(list); //任务数据保存到redis redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map)); redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.FIXING); return true; }