#
zjj
3 天以前 8f9fa425d667e3d6330a3ed4553834783bb30099
#
7个文件已修改
266 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/RgvController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastStaController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/RgvProtocol.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensRgvThread.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/rgvOperate.html 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -14,10 +14,12 @@
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvErr;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastSta;
import com.zy.asrs.mapper.BasRgvErrMapper;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.WrkMastStaService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.core.CrnThread;
import com.zy.core.RgvThread;
@@ -70,6 +72,8 @@
    private MainServiceImpl mainService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WrkMastStaService wrkMastStaService;
    int wrkNo = 9990;
@@ -441,15 +445,29 @@
            if (rgvProtocol == null) {
                continue;
            }
            if (rgvProtocol.getTaskNo1() != 0){
                WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
                        .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts, create_time as createTime")
                        .eq("wrk_No", rgvProtocol.getTaskNo1())
                        .orderBy("create_time", false)
                );
                if (!Cools.isEmpty(wrkMastSta)){
                    vo.setWrkSts(wrkMastSta.getWrkSts());
                }
            }
            vo.setStatusType(rgvProtocol.modeType.desc);   //  模式状态
            vo.setStatus(rgvProtocol.getStatusType1().desc);     //  状态
            vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  工位1任务号
            vo.setRgvPos(rgvProtocol.getRgvPos());
            vo.setRgvPos(rgvProtocol.getCode());
            vo.setPakMk(rgvThread.isPakMk()?"无锁":"锁定");
            vo.setWalkPos(rgvProtocol.getAlarm() == 0?"正常":"报警");
            vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
//            vo.setStaNo(rgvProtocol.getSouSta().intValue());
//            vo.setSourceStaNo(rgvProtocol.getEndSta().intValue());
            vo.setList32(rgvProtocol.getList32());
            vo.setList33(rgvProtocol.getList33());
            vo.setList34(rgvProtocol.getList34());
            vo.setList35(rgvProtocol.getList35());
            if (rgvProtocol.getAlarm() > 0) {
                BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName());
src/main/java/com/zy/asrs/controller/WrkMastStaController.java
@@ -41,6 +41,7 @@
        excludeTrash(param);
        convert(param, wrapper);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        wrapper.orderBy("create_time",false);
        return R.ok(wrkMastStaService.selectPage(new Page<>(curr, limit), wrapper));
    }
src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
@@ -1,5 +1,6 @@
package com.zy.asrs.domain.vo;
import com.core.common.Cools;
import lombok.Data;
/**
@@ -54,4 +55,37 @@
    private String pakMk="-";
    private boolean[] list32 = new boolean[10];
    private boolean[] list33 = new boolean[10];
    private boolean[] list34 = new boolean[10];
    private boolean[] list35 = new boolean[10];
    private Integer wrkSts;
    public String getWrkSts$() {
        if (Cools.isEmpty(this.wrkSts)) {
            try {
                if (this.wrkSts==0){
                    return "初始";
                }
            }catch (Exception e){
                return "";
            }
            return "";
        }
        switch (this.wrkSts) {
            case 0:
                return "初始";
            case 1:
                return "等待小车取";
            case 2:
                return "等待小车放";
            case 3:
                return "完成";
            default:
                return "";
        }
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -46,11 +46,11 @@
//                    mainService.getRgvTask();
//                    mainService.RGVDemoShow0();
//                    mainService.RGVDemoShow1();
                    mainService.RGVDemoShow2();
//                    mainService.RGVDemoShow2();
                    //任务生成
                    mainService.DevpTaskAndPut();
                    //执行小车货物搬运任务
                    mainService.rgvRunWrkMastFullSta();
//                    mainService.DevpTaskAndPut();
//                    //执行小车货物搬运任务
//                    mainService.rgvRunWrkMastFullSta();
src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -79,6 +79,8 @@
     */
    public Short walkPos;
    public Integer code;
    //////////////////////     工位2定义   //////////////////////////////////////////////////
//    /**
//     * 工位2任务号
@@ -140,6 +142,14 @@
     */
    public Float xDuration;
    public boolean[] list32 = new boolean[10];
    public boolean[] list33 = new boolean[10];
    public boolean[] list34 = new boolean[10];
    public boolean[] list35 = new boolean[10];
    public void setMode(Short mode) {
        this.mode = mode;
        this.modeType = RgvModeType.get(mode);
@@ -197,17 +207,17 @@
        return basRgv;
    }
    public void setxSpeed(Short xSpeed) {
        this.xSpeed = Float.valueOf(xSpeed);
    }
//    public void setxSpeed(Short xSpeed) {
//        this.xSpeed = Float.valueOf(xSpeed);
//    }
//
//    public void setxDistance(Short xDistance) {
//        this.xDistance = Float.valueOf(xDistance);
//    }
    public void setxDistance(Short xDistance) {
        this.xDistance = Float.valueOf(xDistance);
    }
    public void setxDuration(Short xDuration) {
        this.xDuration = Float.valueOf(xDuration);
    }
//    public void setxDuration(Short xDuration) {
//        this.xDuration = Float.valueOf(xDuration);
//    }
    public Integer getRgvPosI(){
        //需要根据现场改造  根据读到的值获取对应站点位置
src/main/java/com/zy/core/thread/SiemensRgvThread.java
@@ -142,7 +142,7 @@
        }
        rgvProtocol.setMode((short) -1);
        rgvProtocol.setStatus((short)-1);
        rgvProtocol.setTaskNo1(0);
        rgvProtocol.setTaskNo1(1002);
        rgvProtocol.setStatus1((short)-1);
        rgvProtocol.setLoaded1((short)0);
        rgvProtocol.setWalkPos((short)0);
@@ -151,11 +151,13 @@
//        rgvProtocol.setStatus2((short)-1);
//        rgvProtocol.setLoaded2((short)0);
        rgvProtocol.setAlarm((short)0);
        rgvProtocol.setxSpeed((short) 0);
        rgvProtocol.setxDistance((short) 0);
        rgvProtocol.setxDuration((short) 0);
        rgvProtocol.setXSpeed(0.0F);
        rgvProtocol.setXDistance(0.0F);
        rgvProtocol.setXDuration(0.0F);
        rgvProtocol.setSouSta((short)0);
        rgvProtocol.setEndSta((short)0);
        rgvProtocol.setList32(new boolean[8]);
        rgvProtocol.setRgvPos(8000);
    }
    @Override
@@ -195,14 +197,18 @@
                rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6));
                rgvProtocol.setRgvPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
                rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
//                rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
                rgvProtocol.setCode(siemensNet.getByteTransform().TransInt32(result.Content, 12));
                rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 16));
                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 20));
//                rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
//                rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
                rgvProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 20));
                rgvProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 24));
                rgvProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 28));
                rgvProtocol.setList32(siemensNet.getByteTransform().TransBool(result.Content, 32, 1));
                rgvProtocol.setList33(siemensNet.getByteTransform().TransBool(result.Content, 33, 1));
                rgvProtocol.setList34(siemensNet.getByteTransform().TransBool(result.Content, 34, 1));
                rgvProtocol.setList35(siemensNet.getByteTransform().TransBool(result.Content, 35, 1));
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -13,12 +13,44 @@
<body>
    <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;">
        <div style="width: 100%;" class="demo-container">
                <el-card class="box-card" >
                    <div slot="header" class="clearfix">
                        <span>设备位置</span>
                    </div>
                    <el-row >
                        <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                    </el-row>
                    <el-row  type="flex" justify="center">
                        <el-col :span="18" >
                            <el-slider v-model="value1" :min="min" :max="max" :format-tooltip="formatTooltip" >
                            </el-slider>
                        </el-col>
                    </el-row>
                    <el-row >
                        <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" :offset="13"><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                        <el-col :span="1" ><el-card class="card-bg"></el-card></el-col>
                    </el-row>
                </el-card>
        </div>
        <div style="width: 100%;">
            <el-table border ref="singleTable" :data="tableData" highlight-current-row @row-click="handleRowClick"
                max-height="350" style="width: 100%">
                <el-table-column property="rgvNo" label="RGV号">
                </el-table-column>
                <el-table-column property="workNo1" label="工作号">
                </el-table-column>
                <el-table-column property="wrkSts$" label="任务状态">
                </el-table-column>
                <el-table-column property="statusType" label="模式">
                </el-table-column>
@@ -27,6 +59,10 @@
                <el-table-column property="walkPos" label="设备状态">
                </el-table-column>
                <el-table-column property="pakMk" label="锁定状态">
                </el-table-column>
                <el-table-column property="warnCode" label="异常代码">
                </el-table-column>
                <el-table-column property="alarm" label="异常描述">
                </el-table-column>
            </el-table>
        </div>
@@ -126,7 +162,7 @@
                </el-card>
            </div>
            <div style="width: 45%;">
                <el-card class="box-card">
                <el-card style="width: 100%;">
                    <div slot="header" class="clearfix">
                        <span>设备状态</span>
                    </div>
@@ -135,7 +171,7 @@
                            <el-empty description="请选择设备"></el-empty>
                        </div>
                        <div v-else>
                            <el-descriptions :title="currentTitle" direction="vertical" :column="4" border>
                            <el-descriptions :title="currentTitle" direction="vertical" :column="8" border>
                                <el-descriptions-item label="RGV">{{ tableData[currentIndex].rgvNo }}
                                </el-descriptions-item>
                                <el-descriptions-item label="工作号">
@@ -146,20 +182,70 @@
                                </el-descriptions-item>
                                <el-descriptions-item label="任务状态">
                                        <el-tag>{{ tableData[currentIndex].status}}</el-tag>
                                    <el-tag>{{ tableData[currentIndex].status}}</el-tag>
                                </el-descriptions-item>
                                <el-descriptions-item label="设备状态">
                                    <el-tag>{{ tableData[currentIndex].walkPos }}</el-tag>
                                <el-descriptions-item label="前后极限">
                                    {{ tableData[currentIndex].list32[0]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="故障代码">{{ tableData[currentIndex].warnCode }}
                                <el-descriptions-item label="货叉中位1">{{ tableData[currentIndex].list32[1]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="故障描述">{{ tableData[currentIndex].alarm }}
                                <el-descriptions-item label="货叉中位2">{{ tableData[currentIndex].list32[2]}}
                                </el-descriptions-item>
<!--                                <el-descriptions-item label="源站">{{ tableData[currentIndex].staNo }}-->
<!--                                </el-descriptions-item>-->
<!--                                <el-descriptions-item label="目标站">{{ tableData[currentIndex].sourceStaNo }}-->
<!--                                </el-descriptions-item>-->
                                <el-descriptions-item label="货叉前极限">{{ tableData[currentIndex].list32[3]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="货叉后极限">{{ tableData[currentIndex].list32[4]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="行走强减速">{{ tableData[currentIndex].list32[5]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="急停">{{ tableData[currentIndex].list32[6]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="点动前进">{{ tableData[currentIndex].list32[7]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="点动后退">{{ tableData[currentIndex].list33[0]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="点动左伸">{{ tableData[currentIndex].list33[1]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="点动右伸">{{ tableData[currentIndex].list33[2]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="本地远程">{{ tableData[currentIndex].list33[3]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="复位">{{ tableData[currentIndex].list33[4]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="行走抱闸">{{ tableData[currentIndex].list33[5]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="手动顶升">{{ tableData[currentIndex].list34[0]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="顶升上到位">{{ tableData[currentIndex].list34[1]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="顶升下到位">{{ tableData[currentIndex].list34[2]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="左超限">{{ tableData[currentIndex].list34[3]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="右超限">{{ tableData[currentIndex].list34[4]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="前凸出">{{ tableData[currentIndex].list34[5]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="后凸出">{{ tableData[currentIndex].list34[6]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="超高">{{ tableData[currentIndex].list34[7]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="载货台有物">{{ tableData[currentIndex].list32[0]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="左探货1">{{ tableData[currentIndex].list32[1]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="左探货2">{{ tableData[currentIndex].list32[2]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="右探货1">{{ tableData[currentIndex].list32[3]}}
                                </el-descriptions-item>
                                <el-descriptions-item label="右探货2">{{ tableData[currentIndex].list32[4]}}
                                </el-descriptions-item>
                            </el-descriptions>
                        </div>
@@ -217,7 +303,10 @@
                    }
                ],
                demo: 'X',
                rgvMode: 0
                rgvMode: 0,
                value1:50000,
                min:8000,
                max:80000
            },
            created() {
                this.init()
@@ -226,6 +315,9 @@
            },
            methods: {
                formatTooltip(){
                    return "RGV 1"
                },
                staTova(sta,end){
                    let that = this
                    that.$confirm('此操作存在风险,是否继续','提示',{
@@ -290,6 +382,7 @@
                        method: 'post',
                        success: function (res) {
                            that.tableData = res.data
                            that.value1 = res.data.rgvPos
                        }
                    });
                },
@@ -518,6 +611,32 @@
            }
        })
    </script>
    <style>
         .el-slider__bar {
            background-color: #e4e7ed;
        }
         .el-slider__button{
             width: 30px !important;
             height: 30px !important;
             border-radius: 2px !important; /* 关键属性 */
             border: 2px solid #409EFF !important;
         }
         .el-slider__runway {
             cursor: not-allowed !important;
             pointer-events: none !important;
         }
         .card-bg{
             background-color: #9d9d9d;
         }
         .el-slider {
             transform: scaleX(-1);
         }
         /*.el-slider__button-wrapper {*/
            /* transform: scaleX(-1);*/
         /*}*/
    </style>
</body>
</html>