#
luxiaotao1123
2020-11-20 174da9c1166b06f83cb178961fbb3153d688859d
#
6个文件已修改
178 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MonitorController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/ServerBootstrap.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LedThread.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/monitor/js/monitor.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/monitor/monitor.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -12,8 +12,12 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.thread.LedThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -93,20 +97,22 @@
            }
        }
//        int totalWrk = reportQueryMapper.getTotalWrkByCrnId(crnId);
//        int totalLoc = reportQueryMapper.getTotalLocByCrnId();
        // 获取输送线plc线程
        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, crnId);
        String ledContent = ledThread.getStringBuffer().toString();
        ledContent = "ask的模块萨满大算了萨满大了\n 是窘境到埃及嗲家嗲\n 萨达姆打开萨满大凯撒麦当劳萨满大老师";
        return R.ok(
                Cools.add("xSpeed", Arith.multiplys(1, Math.abs(xSpeed), 1)) // 行走速度
                .add("ySpeed", Arith.multiplys(1, Math.abs(ySpeed), 1))  // 升降速度
                .add("zSpeed", Arith.multiplys(1, Math.abs(zSpeed), 1))  // 叉牙速度
                .add("forkPos", forkPos)  // 叉牙速度
//                .add("totalLoc", totalLoc)  // 总库位数
//                .add("totalWrk", totalWrk)    // 总任务数
                .add("xDistance", Arith.multiplys(1, Math.abs(xDistance), 1))    // 累计走行距离km
                .add("yDistance", Arith.multiplys(1, Math.abs(yDistance), 1))   // 累计升降距离km
                .add("xDuration", Arith.multiplys(1, Math.abs(xDuration), 1))    // 累计走行时长h
                .add("yDuration", Arith.multiplys(1, Math.abs(yDuration), 1))    // 累计升降时长h
                .add("isShow", !Cools.isEmpty(ledContent)) // 是否显示内容
                .add("content", ledContent) // 显示内容
        );
    }
src/main/java/com/zy/core/ServerBootstrap.java
@@ -5,6 +5,7 @@
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.*;
import lombok.extern.slf4j.Slf4j;
@@ -104,12 +105,12 @@
            SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread);
        }
        // 初始化LED线程
//        log.info("初始化LED线程...................................................");
//        for (LedSlave led : slaveProperties.getLed()) {
//            LedThread ledThread = new LedThread(led);
//            new Thread(ledThread).start();
//            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
//        }
        log.info("初始化LED线程...................................................");
        for (LedSlave led : slaveProperties.getLed()) {
            LedThread ledThread = new LedThread(led);
            new Thread(ledThread).start();
            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
        }
        // 初始化台车线程
        log.info("初始化台车线程...................................................");
        for (Slave car : slaveProperties.getCar()) {
src/main/java/com/zy/core/thread/LedThread.java
@@ -39,6 +39,9 @@
    private Set<Integer> workNos = new HashSet<>();
    private boolean resetStatus = false;    //  复位状态
    // 显示器
    private StringBuffer stringBuffer = new StringBuffer();
    public LedThread(Slave slave) {
        this.slave = slave;
        try {
@@ -54,7 +57,7 @@
    @Override
    @SuppressWarnings({"InfiniteLoopStatement", "unchecked"})
    public void run() {
        connect();
//        connect();
        while (true) {
            try {
                Task task = MessageQueue.poll(SlaveType.Led, slave.getId());
@@ -73,7 +76,7 @@
                    }
                }
                Thread.sleep(3000);
                Thread.sleep(1000);
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -102,56 +105,73 @@
    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();
//        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) {
            page.newLine(command.getTitle() +"("+command.getWorkNo()+")");
            page.newLine("源库位:"+command.getSourceLocNo());
            page.newLine("目标站:"+command.getStaNo());
            sb.append(command.getTitle() +"("+command.getWorkNo()+")");
            sb.append("源库位:"+command.getSourceLocNo());
            sb.append("目标站:"+command.getStaNo());
            if (!command.isEmptyMk()) {
                for (MatDto matDto : command.getMatDtos()) {
                    page.newLine(matDto.getMaknx() + "【数量" + matDto.getCount() +"】");
                    sb.append(matDto.getMaknx() + "【数量" + matDto.getCount() +"】");
                }
            }
            page.newLine("\n");
            sb.append("\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;
        stringBuffer.delete(0, stringBuffer.length());
        stringBuffer.append(sb.toString());
    }
    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);
//            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;
        }
    }
src/main/resources/application.yml
@@ -102,12 +102,12 @@
    ip: 192.168.10.150
    port: 51236
  # LED1
#  led[0]:
#    id: 1
#    ip: 192.168.10.61
#    port: 5005
#    devpPlcId: ${wcs-slave.devp[0].id}
#    staArr: 1,2
  led[0]:
    id: 1
    ip: 192.168.10.61
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 2
  # 磅称
#  scale[0]:
#    id: 1
src/main/webapp/views/monitor/js/monitor.js
@@ -73,6 +73,17 @@
            // crnChartOption.series[3].data[0].value = (Math.random()*2).toFixed(2) - 0;
            crnChart.setOption(crnChartOption);
            // 中下
            if (res.data.isShow) {
                $('#banner').hide();
                $('#led-content').show();
                $('#led-p-content').text(res.data.content);
            } else {
                $('#led-content').hide();
                $('#banner').show();
                $('#led-p-content').text("");
            }
        } else if (res.code === 403){
            parent.location.href = baseUrl+"/login";
        }  else {
src/main/webapp/views/monitor/monitor.html
@@ -80,6 +80,14 @@
            }
        }
        #led-content {
            display: none;
        }
        #led-p-content {
            padding: 20px 40px;
            font-size: 35px;
            font-weight: bold
        }
    </style>
</head>
@@ -195,18 +203,12 @@
                        <div class="speed-content">
                            <div id="crn-chart" class="speed-chart">
                            </div>
<!--                            <div id="xSpeed-chart" class="speed-chart">-->
<!--&lt;!&ndash;                                <span>堆垛机走行速度:</span><span id="xSpeed" class="counter">5.00</span><span>米/秒</span>&ndash;&gt;-->
<!--                            </div>-->
<!--                            <div id="ySpeed-chart" class="speed-chart">-->
<!--&lt;!&ndash;                                <span>堆垛机升降速度:</span><span id="ySpeed" class="counter">5.00</span><span>米/秒</span>&ndash;&gt;-->
<!--                            </div>-->
                        </div>
                    </div>
                    <!-- 中下 -->
                    <div class="scroll-pane">
                        <div class="layui-carousel" id="test1">
                        <div class="layui-carousel" id="banner">
                            <div carousel-item>
                                <div class="item-img" id="img-1" style="background-color: red"></div>
                                <div class="item-img" id="img-2" style="background-color: gold"></div>
@@ -214,6 +216,10 @@
                                <div class="item-img" id="img-4" style="background-color: white"></div>
                                <div class="item-img" id="img-5" style="background-color: darkgoldenrod"></div>
                            </div>
                        </div>
                        <div id="led-content">
                            <pre id="led-p-content"></pre>
                        </div>
<!--                        &lt;!&ndash; 中左 &ndash;&gt;-->
@@ -368,7 +374,7 @@
        var element = layui.element;
        // 轮播图
        carousel.render({
            elem: '#test1'
            elem: '#banner'
            ,width: '100%' //设置容器宽度
            ,arrow: 'hover' // 切换箭头默认显示状态,可选值为 hover(悬停显示) always(始终显示) none(始终不显示)
            ,interval: '3000' // 自动切换的时间间隔,单位:ms(毫秒),不能低于800