Junjie
2023-05-23 75b207b2b53a89286dfb1515d47da25c3415fc9b
指令创建和状态更新
8个文件已修改
1个文件已添加
144 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/CommandUtils.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/cache/MessageQueue.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/CrnCommand.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/LedCommand.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LedThread.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.WmsWrkStatusType;
import com.zy.asrs.entity.*;
src/main/java/com/zy/asrs/utils/CommandUtils.java
New file
@@ -0,0 +1,88 @@
package com.zy.asrs.utils;
import com.alibaba.fastjson.JSON;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.WrkMastService;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
import com.zy.core.model.protocol.StaProtocol;
import java.util.Date;
import java.util.List;
public class CommandUtils {
    public static void offer(SlaveType type, Integer id, Task task) {
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        if (commandInfoService == null) {
            return;
        }
        WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class);
        if (wrkMastService == null) {
            return;
        }
        CommandInfo commandInfo = null;
        WrkMast wrkMast = null;
        int taskNo = 0;
        switch (type) {
            case Crn:
                CrnCommand command = (CrnCommand) task.getData();
                taskNo = command.getTaskNo();
                wrkMast = wrkMastService.selectById(taskNo);
                commandInfo = new CommandInfo();
                commandInfo.setWrkNo(taskNo);
                commandInfo.setWmsWrkNo(wrkMast.getWmsWrkNo());
                commandInfo.setCommandStatus(1);
                commandInfo.setStartTime(new Date());
                commandInfo.setDevice("crn");
                commandInfo.setCommand(JSON.toJSONString(command));
                commandInfoService.insert(commandInfo);
                command.setCommandInfo(commandInfo);
                break;
            case Devp:
                StaProtocol staProtocol = (StaProtocol) task.getData();
                taskNo = staProtocol.getWorkNo();
                wrkMast = wrkMastService.selectById(taskNo);
                commandInfo = new CommandInfo();
                commandInfo.setWrkNo(taskNo);
                commandInfo.setWmsWrkNo(wrkMast.getWmsWrkNo());
                commandInfo.setCommandStatus(1);
                commandInfo.setStartTime(new Date());
                commandInfo.setDevice("devp");
                commandInfo.setCommand(JSON.toJSONString(staProtocol));
                commandInfoService.insert(commandInfo);
                staProtocol.setCommandInfo(commandInfo);
                break;
            case Led:
                List<LedCommand> data = (List<LedCommand>) task.getData();
                for (LedCommand ledCommand : data) {
                    taskNo = ledCommand.getWorkNo();
                    wrkMast = wrkMastService.selectById(taskNo);
                    commandInfo = new CommandInfo();
                    commandInfo.setWrkNo(ledCommand.getWorkNo());
                    commandInfo.setWmsWrkNo(wrkMast.getWmsWrkNo());
                    commandInfo.setCommandStatus(1);
                    commandInfo.setStartTime(new Date());
                    commandInfo.setDevice("led");
                    commandInfo.setCommand(JSON.toJSONString(ledCommand));
                    commandInfoService.insert(commandInfo);
                    ledCommand.setCommandInfo(commandInfo);
                }
                break;
        }
    }
}
src/main/java/com/zy/core/cache/MessageQueue.java
@@ -1,5 +1,6 @@
package com.zy.core.cache;
import com.zy.asrs.utils.CommandUtils;
import com.zy.core.Slave;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
@@ -61,6 +62,7 @@
     * 如果发现队列已满无法添加的话,会直接返回false。
     */
    public static boolean offer(SlaveType type, Integer id, Task task) {
        CommandUtils.offer(type, id, task);
        switch (type) {
            case Crn:
                return CRN_EXCHANGE.get(id).offer(task);
src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -1,6 +1,7 @@
package com.zy.core.model.command;
import com.alibaba.fastjson.annotation.JSONField;
import com.zy.asrs.entity.CommandInfo;
import com.zy.core.enums.CrnTaskModeType;
import lombok.Data;
@@ -74,6 +75,9 @@
    // 任务确认 0:未确认 1:已确认
    private Short command = 0;
    //指令信息
    private CommandInfo commandInfo;
    public void setTaskMode(Short taskMode){
        this.taskMode = taskMode;
        this.taskModeType = CrnTaskModeType.get(taskModeType);
src/main/java/com/zy/core/model/command/LedCommand.java
@@ -1,5 +1,6 @@
package com.zy.core.model.command;
import com.zy.asrs.entity.CommandInfo;
import com.zy.common.model.MatDto;
import lombok.Data;
@@ -30,4 +31,7 @@
    private boolean emptyMk = false;
    private Integer ioType;
    //指令信息
    private CommandInfo commandInfo;
}
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -1,6 +1,7 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.CommandInfo;
import lombok.Data;
/**
@@ -55,6 +56,9 @@
    // 隔壁站点(台车位置)
    private String nearbySta;
    //指令信息
    private CommandInfo commandInfo;
    public BasDevp toSqlModel(){
        BasDevp basDevp = new BasDevp();
        basDevp.setDevNo(siteId);
src/main/java/com/zy/core/thread/LedThread.java
@@ -117,14 +117,11 @@
            }
            page.newLine("\n");
            //更新指令状态
            CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
            CommandInfo commandInfo = new CommandInfo();
            commandInfo.setWrkNo(command.getWorkNo());
            commandInfo.setCommandStatus(1);
            commandInfo.setStartTime(new Date());
            commandInfo.setDevice("led");
            commandInfo.setCommand(JSON.toJSONString(command));
            commandInfoService.insert(commandInfo);
            CommandInfo commandInfo = command.getCommandInfo();
            commandInfo.setCommandStatus(2);
            commandInfoService.updateById(commandInfo);
        }
        // 设置字体
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -363,15 +363,6 @@
            command.setTaskNo((short) 9999);
        }
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        CommandInfo commandInfo = new CommandInfo();
        commandInfo.setWrkNo(command.getTaskNo().intValue());
        commandInfo.setCommandStatus(1);
        commandInfo.setStartTime(new Date());
        commandInfo.setDevice("crn");
        commandInfo.setCommand(JSON.toJSONString(command));
        commandInfoService.insert(commandInfo);
        command.setCrnNo(slave.getId());
        short[] array = new short[9];
        if (command.getAckFinish() == 0) {
@@ -470,6 +461,12 @@
        } catch (Exception ignore) {}
        if (result.IsSuccess && result1.IsSuccess) {
            //更新指令状态
            CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
            CommandInfo commandInfo = command.getCommandInfo();
            commandInfo.setCommandStatus(2);
            commandInfoService.updateById(commandInfo);
            log.warn("堆垛机命令下发[id:{},时间:{}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), JSON.toJSON(command));
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
            return true;
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -250,15 +250,6 @@
        array[1] = staProtocol.getStaNo();
//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        CommandInfo commandInfo = new CommandInfo();
        commandInfo.setWrkNo(staProtocol.getWorkNo().intValue());
        commandInfo.setCommandStatus(1);
        commandInfo.setStartTime(new Date());
        commandInfo.setDevice("devp");
        commandInfo.setCommand(JSON.toJSONString(staProtocol));
        commandInfoService.insert(commandInfo);
        OperateResult writeResult;
        //任务下发次数
        int writeCount = 0;
@@ -320,6 +311,12 @@
            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
                staProtocol.setPakMk(true);
            }
            //更新指令状态
            CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
            CommandInfo commandInfo = staProtocol.getCommandInfo();
            commandInfo.setCommandStatus(2);
            commandInfoService.updateById(commandInfo);
        }
    }