自动化立体仓库 - WCS系统
luxiaotao1123
2020-08-19 4ceb4a8697b05d3176c30e00191296969a98016d
Merge branch 'jsasrs' of https://gitee.com/luxiaotao1123/zy-wcs
4个文件已修改
204 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/SiteController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/DevpThread.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pipeline.html 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -4,15 +4,18 @@
import com.core.common.R;
import com.zy.asrs.domain.vo.PlcErrorTableVo;
import com.zy.asrs.domain.vo.SiteTableVo;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.DevpThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.*;
/**
 * 输送设备接口
@@ -22,31 +25,34 @@
@RequestMapping("/site")
public class SiteController {
    private AtomicInteger integer = new AtomicInteger();
    @Autowired
    private SlaveProperties slaveProperties;
    @PostMapping("/table/site")
    @ManagerAuth(memo = "站点信息表")
    public R siteTable(){
        List<SiteTableVo> list = new ArrayList<>();
        for (int i=0;i<32;i++){
            SiteTableVo vo = new SiteTableVo();
            vo.setDevNo(String.valueOf(i));
            vo.setWorkNo("1204");
            vo.setAutoing("Y");
            vo.setCanining("Y");
            vo.setCanouting("N");
            vo.setHighLow("1");
            vo.setInreqIn("Y");
            vo.setInreqOut("N");
            vo.setLoading("Y");
            if (integer.get()%5 == 0) {
                vo.setStaNo("0000");
            } else {
                vo.setStaNo("9998");
        for (DevpSlave devp : slaveProperties.getDevp()) {
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            Map<Integer, StaProtocol> station = devpThread.getStation();
            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
                StaProtocol staProtocol = entry.getValue();
                SiteTableVo vo = new SiteTableVo();
                vo.setDevNo(entry.getKey());    // 站点编号
                vo.setWorkNo(staProtocol.getWorkNo());   //  工作号
                vo.setAutoing(staProtocol.isAutoing()?"Y":"N");     //  自动
                vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 有物
                vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 可入
                vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 可出
                vo.setInreq1(staProtocol.isInreq1()?"Y":"N");       // 需求1
                vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
                vo.setStaNo(staProtocol.getStaNo());                // 目标站
                list.add(vo);
            }
            list.add(vo);
        }
        integer.getAndIncrement();
        return R.ok().add(list);
    }
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
@@ -1,15 +1,18 @@
package com.zy.asrs.domain.vo;
import lombok.Data;
/**
 * Created by vincent on 2020-06-02
 */
@Data
public class SiteTableVo {
    // 站号
    private String devNo;
    private Integer devNo;
    // 工作号
    private String workNo;
    private Short workNo;
    // 自动
    private String autoing;
@@ -18,100 +21,18 @@
    private String loading;
    // 可入
    private String canining;
    private String inEnable;
    // 可出
    private String canouting;
    private String outEnable;
    // 需求入
    private String inreqIn;
    // 需求1
    private String inreq1;
    // 需求出
    private String inreqOut;
    // 高低库
    private String highLow;
    // 空板信号
    private String emptyMk;
    // 目标站
    private String staNo;
    private Short staNo;
    public String getDevNo() {
        return devNo;
    }
    public void setDevNo(String devNo) {
        this.devNo = devNo;
    }
    public String getWorkNo() {
        return workNo;
    }
    public void setWorkNo(String workNo) {
        this.workNo = workNo;
    }
    public String getAutoing() {
        return autoing;
    }
    public void setAutoing(String autoing) {
        this.autoing = autoing;
    }
    public String getLoading() {
        return loading;
    }
    public void setLoading(String loading) {
        this.loading = loading;
    }
    public String getCanining() {
        return canining;
    }
    public void setCanining(String canining) {
        this.canining = canining;
    }
    public String getCanouting() {
        return canouting;
    }
    public void setCanouting(String canouting) {
        this.canouting = canouting;
    }
    public String getInreqIn() {
        return inreqIn;
    }
    public void setInreqIn(String inreqIn) {
        this.inreqIn = inreqIn;
    }
    public String getInreqOut() {
        return inreqOut;
    }
    public void setInreqOut(String inreqOut) {
        this.inreqOut = inreqOut;
    }
    public String getHighLow() {
        return highLow;
    }
    public void setHighLow(String highLow) {
        this.highLow = highLow;
    }
    public String getStaNo() {
        return staNo;
    }
    public void setStaNo(String staNo) {
        this.staNo = staNo;
    }
}
src/main/java/com/zy/core/thread/DevpThread.java
@@ -5,15 +5,19 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.core.common.DateUtils;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.StaProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -56,6 +60,9 @@
                    default:
                        break;
                }
                // 心跳
                heartbeat();
                Thread.sleep(400);
            } catch (Exception e) {
                e.printStackTrace();
@@ -73,8 +80,10 @@
        OperateResult connect = siemensS7Net.ConnectServer();
        if(connect.IsSuccess){
            result = true;
            OutputQueue.CRN.offer(MessageFormat.format( "【{0}】输送线plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.info("输送线plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        } else {
            OutputQueue.CRN.offer(MessageFormat.format( "【{0}】输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.error("输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
        siemensS7Net.ConnectClose();
@@ -82,7 +91,7 @@
    }
    /**
     * 读取状态
     * 读取状态 ====> 整块plc
     */
    private void read(){
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 40);
@@ -111,7 +120,7 @@
    }
    /**
     * 写入
     * 写入 =====> 单站点写入
     */
    private void write(StaProtocol staProtocol){
        if (null == staProtocol) {
@@ -131,6 +140,16 @@
        }
    }
    /**
     * 心跳
     */
    private void heartbeat(){
        OperateResult write = siemensS7Net.Write("DB100.50", (short) 1);
        if (!write.IsSuccess) {
            log.error("输送线plc编号={} 心跳失败", slave.getId());
        }
    }
    @Override
    public void close() {
        siemensS7Net.ConnectClose();
src/main/webapp/views/pipeline.html
@@ -61,9 +61,8 @@
                    <th>有物</th>
                    <th>可入</th>
                    <th>可出</th>
                    <th>需求入</th>
                    <th>需求出</th>
                    <th>高低库</th>
                    <th>需求1</th>
                    <th>空板信号</th>
                    <th>目标站</th>
                </tr>
            </thead>
@@ -147,23 +146,11 @@
                        setVal(tr.children("td").eq(1), table[i-1].workNo);
                        setVal(tr.children("td").eq(2), table[i-1].autoing);
                        setVal(tr.children("td").eq(3), table[i-1].loading);
                        setVal(tr.children("td").eq(4), table[i-1].canining);
                        setVal(tr.children("td").eq(5), table[i-1].canouting);
                        setVal(tr.children("td").eq(6), table[i-1].inreqIn);
                        setVal(tr.children("td").eq(7), table[i-1].inreqOut);
                        setVal(tr.children("td").eq(8), table[i-1].highLow);
                        setVal(tr.children("td").eq(4), table[i-1].inEnable);
                        setVal(tr.children("td").eq(5), table[i-1].outEnable);
                        setVal(tr.children("td").eq(6), table[i-1].inreq1);
                        setVal(tr.children("td").eq(7), table[i-1].emptyMk);
                        setVal(tr.children("td").eq(9), table[i-1].staNo);
                        // tr.children("td").eq(0).html(table[i-1].devNo);
                        // tr.children("td").eq(1).html(table[i-1].workNo);
                        // tr.children("td").eq(2).html(table[i-1].autoing);
                        // tr.children("td").eq(3).html(table[i-1].loading);
                        // tr.children("td").eq(4).html(table[i-1].canining);
                        // tr.children("td").eq(5).html(table[i-1].canouting);
                        // tr.children("td").eq(6).html(table[i-1].inreqIn);
                        // tr.children("td").eq(7).html(table[i-1].inreqOut);
                        // tr.children("td").eq(8).html(table[i-1].highLow);
                        // tr.children("td").eq(9).html(table[i-1].staNo);
                    }
                } else if (res.code === 403){
                    window.location.href = baseUrl+"/login";
@@ -240,7 +227,6 @@
        var html = "";
        for (var i = 0; i < line; i ++){
            html += " <tr>\n" +
                "       <td></td>\n" +
                "       <td></td>\n" +
                "       <td></td>\n" +
                "       <td></td>\n" +