pjb
3 天以前 a1bd5fc40223cee3445fc62b7555afee7bbcdab5
小车异常
7个文件已修改
211 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/RgvController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasRgvErrLog.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/RgvProtocol.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -62,6 +62,8 @@
    @Autowired
    private MainServiceImpl mainService;
    @Autowired
    private BasRgvErrLogService basRgvErrLogService;
    @Autowired
    private BasDevpPositionService basDevpPositionService;
    @Autowired
    private BasCircularShuttleService basCircularShuttleService;
@@ -492,6 +494,21 @@
                        if (rgvCircularShuttleParam.getStatus()==0){
                            rgvCircularShuttleParam.setStatus$(rgvProtocol.statusType.desc);
                        }
                        if (rgvProtocol.getAlarmList().isEmpty()){
                            rgvCircularShuttleParam.setError(0);
                            rgvCircularShuttleParam.setError$("-");
                        } else {
                            StringBuilder alarmList = new StringBuilder();
                            for (Integer alarm : rgvProtocol.getAlarmList()){
                                BasRgvErr rgvErr = basRgvErrMapper.selectById(alarm);
                                alarmList.append((rgvErr==null || rgvErr.getErrName()==null)? "未知异常:"+alarm:rgvErr.getErrName());
                                if (alarm.equals(rgvProtocol.getAlarmList().get(rgvProtocol.getAlarmList().size() - 1))){
                                    break;
                                }
                                alarmList.append("---");
                            }
                            rgvCircularShuttleParam.setError$(alarmList.toString());
                        }
                    }
                }
            }
@@ -527,4 +544,18 @@
        return R.ok();
    }
    @PostMapping("/task/rgv/circular/shuttle/mast/position/data/v1")
//    @ManagerAuth(memo = "作业信息")
    public R rgvCircularShuttleV1(){
        List<BasRgvErrLog> result = new ArrayList<>();
        for (int i = 1 ; i<11; i ++){
            BasRgvErrLog basRgvErrLog = basRgvErrLogService.selectOne(new EntityWrapper<BasRgvErrLog>().eq("rgv_no", i).orderBy("id", false));
            if (basRgvErrLog!=null){
                result.add(basRgvErrLog);
            }
        }
        return R.ok().add(result);
    }
}
src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java
@@ -22,7 +22,9 @@
     * 0:正常,1:禁用
     */
    private Integer status;
    private Integer error;
    private String status$ = "未知";
    private String error$ = "-";
    private Long position = 0L;
    public RgvCircularShuttleParam(){};
src/main/java/com/zy/asrs/entity/BasRgvErrLog.java
@@ -1,15 +1,20 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.mapper.BasRgvErrMapper;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Data
@TableName("asr_bas_rgv_err_log")
@@ -169,6 +174,33 @@
    public BasRgvErrLog() {}
    public BasRgvErrLog(List<Integer> alarmLists , Short taskNo,Integer rgvNo) {
        BasRgvErrMapper basRgvErrMapper = SpringUtils.getBean(BasRgvErrMapper.class);
        StringBuilder alarmList = new StringBuilder();
        for (Integer alarm : alarmLists){
            BasRgvErr rgvErr = basRgvErrMapper.selectById(alarm);
            alarmList.append((rgvErr==null || rgvErr.getErrName()==null)? "未知异常:"+alarm:rgvErr.getErrName());
            if (alarm.equals(alarmLists.get(alarmLists.size() - 1))){
                this.errCode = alarm;
                break;
            }
            alarmList.append("---");
        }
        this.error = alarmList.toString();
        Date now = new Date();
        this.uuid = String.valueOf(now.getTime());
        this.wrkNo = taskNo.intValue();
        this.startTime = now;
        this.endTime = now;
        this.rgvNo = rgvNo;
        this.status = 1;
        this.createTime = now;
        this.createBy = 9999L;
        this.updateTime = now;
        this.updateBy = 9999L;
        this.memo = "异常自动记录";
    }
    public BasRgvErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer rgvNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
        this.uuid = uuid;
        this.wrkNo = wrkNo;
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -499,6 +499,9 @@
                        break;
                    }
                    wrkMast.setWrkSts(2L);
                    if (wrkMast.getIoType()==120){
                        wrkMast.setWrkSts(53L);
                    }
                    Date now = new Date();
                    wrkMast.setRgvFinishTime(now);
                    wrkMastService.updateById(wrkMast);
src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -4,6 +4,9 @@
import com.zy.core.enums.*;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by vincent on 2020/8/7
 */
@@ -104,6 +107,7 @@
     * 异常码
     */
    public Short alarm;
    public List<Integer> alarmList = new ArrayList<>();
    /**
     * 心跳指令 1-2每秒切换一次
src/main/java/com/zy/core/thread/RgvThread.java
@@ -8,7 +8,9 @@
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvErrLog;
import com.zy.asrs.entity.BasRgvOpt;
import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.core.ThreadHandler;
@@ -24,7 +26,10 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
/**
 * RGV线程
@@ -45,6 +50,7 @@
     * 工位2复位信号
     */
    private boolean resetFlag2 = false;
    private boolean alarmChangeSign = false;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -147,6 +153,7 @@
            OperateResultExOne<byte[]> result = siemensNet.Read("DB100.0", (short) 20);
//            OperateResultExOne<byte[]> resultV = siemensNet.Read("DB20.16", (short) 2);
//            OperateResultExOne<byte[]> resultE = siemensNet.Read("DB20.26", (short) 2);
            OperateResultExOne<byte[]> resultError = siemensNet.Read("DB13.0", (short) 13);
            if (result.IsSuccess) {
                if (null == rgvProtocol) {
                    rgvProtocol = new RgvProtocol();
@@ -164,6 +171,20 @@
//                rgvProtocol.setInstantaneousSpeed((double) siemensNet.getByteTransform().TransInt16(resultV.Content, 0));
//                rgvProtocol.setEndStaM(siemensNet.getByteTransform().TransInt16(resultE.Content, 0));
//                rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000));
                boolean[] statusAlarmList = siemensNet.getByteTransform().TransBool(resultError.Content, 0, 13);
                int alarmCount = 0;
                List<Integer> alarmList = new ArrayList<>();
                for (boolean alarmSign : statusAlarmList){
                    alarmCount++;
                    if (alarmSign){
                        alarmList.add(alarmCount);
                    }
                }
                alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList()));
                rgvProtocol.setAlarmList(alarmList);
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
                try {
@@ -176,6 +197,15 @@
                    if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
                        log.error("RGV plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                    }
                    try{
                        if (!alarmChangeSign && !alarmList.isEmpty()){
                            BasRgvErrLogService basRgvErrLogService = SpringUtils.getBean(BasRgvErrLogService.class);
                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(rgvProtocol.getAlarmList(), rgvProtocol.getTaskNo1(), rgvProtocol.getRgvNo());
                            basRgvErrLogService.insert(basRgvErrLog);
                        }
                    } catch (Exception e){
                        log.error("RGV异常信息保存失败!!");
                    }
                } catch (Exception ignore) {
                }
src/main/webapp/views/index.html
@@ -100,6 +100,19 @@
            z-index: 1000; /* 确保在其他元素之上 */
        }
        .task-bar-right1 {
            position: fixed;
            top: 5%;
            /*transform: translateY(-50%);*/
            width: 25%; /* 设置宽度 */
            background-color: rgba(255, 255, 255, 0); /* 半透明背景 */
            border-radius: 5px;
            padding: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0);
            z-index: 1000; /* 确保在其他元素之上 */
        }
        .task-bar-right {
            position: fixed;
            top: 1%;
@@ -356,6 +369,10 @@
                            label="状态">
                    </el-table-column>
                    <el-table-column
                            prop="error$"
                            label="异常">
                    </el-table-column>
                    <el-table-column
                            label="操作"
                            type="template">
                        <template slot-scope="scope">
@@ -370,6 +387,38 @@
                </el-table>
            </div>
        </div>
        <div class="task-bar-right1 right-task-bar">
            <div>
                <el-tooltip :content="'Switch value: ' + valueRight1" placement="top">
                    <el-switch
                            v-model="valueRight1"
                            active-color="#13ce66"
                            inactive-color="#ff4949"
                            active-value="100"
                            inactive-value="0">
                    </el-switch>
                </el-tooltip>
            </div>
            <div v-if="valueRight1 === '100' " class="task-bar-div1">
                <el-table
                        :data="tableDataRight1"
                        style="width: 100%"
                        :row-class-name="tableRowClassName">
                    <el-table-column
                            prop="rgvNo"
                            label="小车号">
                    </el-table-column>
                    <el-table-column
                            prop="error"
                            label="异常">
                    </el-table-column>
                    <el-table-column
                            prop="createTime$"
                            label="记录日期">
                    </el-table-column>
                </el-table>
            </div>
        </div>
    </div>
    <script>
@@ -379,6 +428,7 @@
                activeNames: ['1'],
                valueLeft: '0',
                valueRight: '0',
                valueRight1: '0',
                licenseDay: ' ',
                licenseDayI: 100,
                valueSystem: false,
@@ -387,6 +437,7 @@
                energyGatheringRing: [],
                tableDataLeft: [],
                tableDataRight: [],
                tableDataRight1: [],
                devpPos1:[
                    {dev_no: 116,pos:633980},
                    {dev_no: 117,pos:604043},
@@ -442,6 +493,7 @@
                    this.getTableDataTrack()
                    this.getTableDataLeft()
                    this.getTableDataRight()
                    this.getTableDataRight1()
                    this.getValueSystem()
                    this.getLicenseDays()
@@ -451,6 +503,7 @@
                        this.getTableDataTrack()
                        this.getTableDataLeft()
                        this.getTableDataRight()
                        this.getTableDataRight1()
                        this.getValueSystem()
                        this.getLicenseDays()
@@ -465,6 +518,18 @@
                        if (val.length >= 1){
                            this.handleChangeValueRight(1)
                        }
                    }
                },
                handleChange1(val) {
                    console.log(val);
                    if (val.length === 0){
                        valueRight1 = '0';
                    } else {
                        console.log("2222"+val);
                        if (val.length >= 1){
                            this.handleChangeValueRight1(1)
                        }
                    }
                },
@@ -537,6 +602,22 @@
                            valueRight = '100';
                        default:
                            valueRight = '0';
                    }
                },
                handleChangeValueRight1(val) {
                    console.log("33333"+val);
                    switch (val){
                        case 1:
                            valueRight1 = '100';
                        case 2:
                            valueRight1 = '100';
                        case 3:
                            valueRight1 = '100';
                        case 4:
                            valueRight1 = '100';
                        default:
                            valueRight1 = '0';
                    }
                },
                tableRowClassName({row, rowIndex}) {
@@ -636,6 +717,22 @@
                        }
                    });
                },
                getTableDataRight1() {
                    let that = this;
                    $.ajax({
                        url: baseUrl + "/rgv/task/rgv/circular/shuttle/mast/position/data/v1",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
                        data: {},
                        dataType: 'json',
                        contentType: 'application/json;charset=UTF-8',
                        method: 'post',
                        success: function (res) {
                            that.tableDataRight1 = res.data
                        }
                    });
                },
                getTableDataRgv() {
                    let that = this;
                    // that.tableDataRgv = busPsto