自动化立体仓库 - WCS系统
#
luxiaotao1123
2022-02-21 1e8898f3fca605a9e8bd22b8e21829b3bb385f45
#
3个文件已修改
287 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/entity/Parameter.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LedThread.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,7 +7,6 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.mapper.WaitPakinMapper;
@@ -17,11 +16,11 @@
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MatDto;
import com.zy.common.model.SearchLocParam;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import com.zy.common.utils.CollectionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.model.SearchLocParam;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -1155,8 +1154,6 @@
                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.getWorkNo() != 0) {
                    reset = false;
@@ -1166,9 +1163,12 @@
            // 获取led线程
            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
            // led显示默认内容
            if (reset) {
            if (reset && !ledThread.isLedMk()) {
                ledThread.setLedMk(true);
                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
                    log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                } else {
                }
            }
        }
src/main/java/com/zy/common/entity/Parameter.java
@@ -59,4 +59,15 @@
    public void setCodeSwitch(String codeSwitch) {
        this.codeSwitch = codeSwitch;
    }
    private String ledDefaultMsg;
    public String getLedDefaultMsg() {
        return ledDefaultMsg;
    }
    public void setLedDefaultMsg(String ledDefaultMsg) {
        this.ledDefaultMsg = ledDefaultMsg;
    }
}
src/main/java/com/zy/core/thread/LedThread.java
@@ -1,5 +1,8 @@
package com.zy.core.thread;
import com.alibaba.fastjson.JSON;
import com.core.common.Cools;
import com.zy.common.entity.Parameter;
import com.zy.common.model.MatDto;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
@@ -37,17 +40,14 @@
    TextCaptionBxArea area;
    DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]);
    private Set<Integer> workNos = new HashSet<>();
//    private boolean resetStatus = false;    //  复位状态
    // 显示器
    private StringBuffer stringBuffer = new StringBuffer();
    private boolean ledMk = true;
//    private boolean resetStatus = false;    // 复位状态
    public LedThread(Slave slave) {
        this.slave = slave;
        try {
            Bx5GEnv.initial(3000);
            screen = new Bx5GScreenClient("my");
            screen.turnOn();
        } catch (Exception e) {
            e.printStackTrace();
            log.info("led连接构造器错误 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -57,7 +57,8 @@
    @Override
    @SuppressWarnings({"InfiniteLoopStatement", "unchecked"})
    public void run() {
//        connect();
        connect();
        close();
        while (true) {
            try {
                Task task = MessageQueue.poll(SlaveType.Led, slave.getId());
@@ -71,16 +72,124 @@
                        case 2:
                            reset();
                            break;
                        // 警告信息
                        case 3:
                            write(String.valueOf(task.getData()));
                            break;
                        default:
                            break;
                    }
                }
                Thread.sleep(1000);
                Thread.sleep(400);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void write(List<LedCommand> list) throws Bx5GException {
//        if (!connect()) {
//            return;
//        }
        pf = new ProgramBxFile( 0, screen.getProfile());
        pf.setFrameShow(false);
        // 分别输入X,Y,width,height
        area = new TextCaptionBxArea( 0,0,192,128, screen.getProfile());
        // 创建一个数据页
        TextBxPage page = new TextBxPage();
        for (LedCommand command : list) {
            page.newLine(command.getTitle() +"("+command.getWorkNo()+")");
            page.newLine("源库位:"+command.getSourceLocNo());
            page.newLine("目标站:"+command.getStaNo());
            if (!command.isEmptyMk()) {
                for (MatDto matDto : command.getMatDtos()) {
                    page.newLine(matDto.getMaknx() + "【数量" + matDto.getCount() +"】");
                }
            }
            page.newLine("\n");
        }
        // 设置字体
        page.setFont(new Font("宋体",Font.PLAIN,14));
        // 设置文本颜色
        page.setForeground(Color.red);
        // 设置显示特技为快速打出
        page.setDisplayStyle(styles[6]);
        area.clearPages();
        area.addPage(page);
        pf.addArea(area);
        // 更新节目
        screen.writeProgram(pf);
//        resetStatus = false;
        close();
    }
    private void write(String str) throws Bx5GException {
//        if (!connect() || Cools.isEmpty(str)) {
//            return;
//        }
        pf = new ProgramBxFile( 0, screen.getProfile());
        pf.setFrameShow(false);
        // 分别输入X,Y,width,height
        area = new TextCaptionBxArea( 0,0,192,128, screen.getProfile());
        // 创建一个数据页
        TextBxPage page = new TextBxPage();
        page.newLine(str);
        page.newLine("\n");
        // 设置字体
        page.setFont(new Font("宋体",Font.PLAIN,14));
        // 设置文本颜色
        page.setForeground(Color.red);
        // 设置显示特技为快速打出
        page.setDisplayStyle(styles[6]);
        area.clearPages();
        area.addPage(page);
        pf.addArea(area);
        // 更新节目
        screen.writeProgram(pf);
//        resetStatus = false;
        close();
    }
    private void reset() throws Bx5GException {
//        if (!connect()) {
//            return;
//        }
        pf = new ProgramBxFile( 0, screen.getProfile());
        pf.setFrameShow(false);
        // 分别输入X,Y,width,height
        area = new TextCaptionBxArea( 0,0,192,128, screen.getProfile());
        // 创建一个数据页
        TextBxPage page = new TextBxPage();
        List<String> list = null;
        try {
            String ledDefaultMsg = Parameter.get().getLedDefaultMsg();
            list = JSON.parseArray(ledDefaultMsg, String.class);
        } catch (Exception ignore) {
        }
        if (!Cools.isEmpty(list)) {
            for (String str : list) {
                page.newLine(str);
            }
        } else {
            page.newLine("自动化立体仓库");
            page.newLine("浙江中扬立库技术有限公司");
        }
        // 设置字体
        page.setFont(new Font("宋体",Font.PLAIN,15));
        // 设置文本颜色
        page.setForeground(Color.red);
        // 设置显示特技为快速打出
        page.setDisplayStyle(styles[6]);
        area.clearPages();
        area.addPage(page);
        pf.addArea(area);
        // 更新节目
        screen.writeProgram(pf);
        close();
    }
    @Override
@@ -88,13 +197,14 @@
        boolean connRes = false;
        try {
            connRes = screen.connect(slave.getIp(),slave.getPort());
        } catch (Exception ignore) {
        }
        if (connRes) {
            log.info("led连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        } else {
            log.error("led连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
            screen.turnOn();
            if (connRes) {
                log.info("led连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                reset();
            } else {
                log.error("led连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            }
        } catch (Exception ignore) { }
        return connRes;
    }
@@ -103,79 +213,6 @@
        screen.disconnect();
    }
    private void write(List<LedCommand> list) throws Bx5GException {
//        pf = new ProgramBxFile( 0, screen.getProfile());
//        pf.setFrameShow(false);
//        // 分别输入X,Y,width,height
//        area = new TextCaptionBxArea( 0,0,192,128,screen.getProfile());
//        // 创建一个数据页
//        TextBxPage page = new TextBxPage();
//        for (LedCommand command : list) {
//            page.newLine(command.getTitle() +"("+command.getWorkNo()+")");
//            page.newLine("源库位:"+command.getSourceLocNo());
//            page.newLine("目标站:"+command.getStaNo());
//            if (!command.isEmptyMk()) {
//                for (MatDto matDto : command.getMatDtos()) {
//                    page.newLine(matDto.getMaknx() + "【数量" + matDto.getCount() +"】");
//                }
//            }
//            page.newLine("\n");
//        }
//
//        // 设置字体
//        page.setFont(new Font("宋体",Font.PLAIN,12));
//        // 设置显示特技为快速打出
//        page.setDisplayStyle(styles[6]);
//        area.clearPages();
//        area.addPage(page);
//        pf.addArea(area);
//        // 更新节目
//        screen.writeProgram(pf);
//        resetStatus = false;
        StringBuilder sb = new StringBuilder();
        for (LedCommand command : list) {
            sb.append(command.getTitle() +"("+command.getWorkNo()+")").append("\n");
            sb.append("源库位:"+command.getSourceLocNo()).append("\n");
            sb.append("目标站:"+command.getStaNo()).append("\n");
            if (!command.isEmptyMk()) {
                for (MatDto matDto : command.getMatDtos()) {
                    sb.append(matDto.getMaknx() + "【数量" + matDto.getCount() +"】").append("\n");
                }
            }
            sb.append("\n");
        }
        stringBuffer.delete(0, stringBuffer.length());
        stringBuffer.append(sb.toString());
//        resetStatus = false;
    }
    private void reset() throws Bx5GException {
//        if (!resetStatus) {
//            pf = new ProgramBxFile( 0, screen.getProfile());
//            pf.setFrameShow(false);
//            // 分别输入X,Y,width,height
//            area = new TextCaptionBxArea( 0,0,192,128,screen.getProfile());
//            // 创建一个数据页
//            TextBxPage page = new TextBxPage();
//            page.newLine("广德中扬物流装备有限公司");
//            page.newLine("自动化立体仓库");
//            page.newLine("浙江中扬立库技术有限公司");
//            // 设置字体
//            page.setFont(new Font("宋体",Font.PLAIN,12));
//            // 设置显示特技为快速打出
//            page.setDisplayStyle(styles[6]);
//            area.clearPages();
//            area.addPage(page);
//            pf.addArea(area);
//            // 更新节目
//            screen.writeProgram(pf);
            stringBuffer.delete(0, stringBuffer.length());
//            resetStatus = true;
//        }
    }
    public static void main(String[] args) throws Exception {
@@ -187,34 +224,35 @@
            return;
        }
        screen.turnOn();
        ProgramBxFile pf = new ProgramBxFile( 0, screen.getProfile());
        pf.setFrameShow(false);
        // 分别输入X,Y,width,heigth
        TextCaptionBxArea area = new TextCaptionBxArea( 0,0,192,128,screen.getProfile());
        // 创建一个数据页
        // 第一行数据
        TextBxPage page = new TextBxPage("全板入库");
        page.newLine("目标库位:0100204");
        // 第二行数据
        page.newLine("接收器 RX18 XH 6V 【数量:2】");
        page.newLine("中控 BM蓝牙 英文 6V 【数量:1】");
        page.newLine("线束 S2588-1-XX 无实物【数量:5】");
        page.newLine("接收器 RX18 XH 6V 【数量:2】");
        page.newLine("中控 BM蓝牙 英文 6V 【数量:1】");
        page.newLine("线束 S2588-1-XX 无实物【数量:5】");
        page.newLine("接收器 RX18 XH 6V 【数量:2】");
        page.newLine("中控 BM蓝牙 英文 6V 【数量:1】");
        page.newLine("线束 S2588-1-XX 无实物【数量:5】");
        // 设置字体
        page.setFont( new Font("宋体",Font.PLAIN,12));
        // 设置显示特技为快速打出
        page.setDisplayStyle(styles[6]);
        area.addPage(page);
        pf.addArea( area );
        // 更新节目
        screen.writeProgram(pf);
        while (true) {
            Thread.sleep(5000L);
            ProgramBxFile pf = new ProgramBxFile( 0, screen.getProfile());
            pf.setFrameShow(false);
            // 分别输入X,Y,width,heigth
            TextCaptionBxArea area = new TextCaptionBxArea(  0,0,192,128,screen.getProfile());
            // 创建一个数据页
            // 第一行数据
            TextBxPage page = new TextBxPage("出库任务(303)");
            page.newLine("源库位:0100204");
            page.newLine("目标站:1000");
            // 设置字体
            page.setFont( new Font("宋体",Font.PLAIN,12));
            // 设置显示特技为快速打出
            page.setDisplayStyle(styles[6]);
            area.clearPages();
            area.addPage(page);
            pf.addArea( area );
            // 更新节目
            screen.writeProgram(pf);
        }
        // 继开与控制器之间的链接
        screen.disconnect();
//        screen.disconnect();
    }