#
Junjie
2025-05-02 22a4f862b33a02ed7baccf0da690ce2c52b756fe
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -1,7 +1,7 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.CommandInfo;
import com.zy.core.enums.DevpType.*;
import lombok.Data;
import java.util.ArrayList;
@@ -25,33 +25,62 @@
    // 目标站
    private Short staNo;
    //指令ID
    private Integer commandId;
    // ----------------------------------------------------------------
    // 自动
    private boolean autoing;
    //模式
    private Short mode;
    public DevpModeType modeType;
    //状态
    private Short state;
    public DevpStateType stateType;
    //工作状态
    private Short workIo;
    public DevpWorkType workType;
    //请求信号
    private Short requestIo;
    public DevpRequestType requestType;
    //托盘状态
    private Short trayIo;
    public DevpTrayType trayType;
    //库位状态
    private Short locIo;
    public DevpLocType locType;
    //条码信息
    private String barcode;
    //重量信息
    private Double weightIo;
    //备用
    private Short spare;
    // 有物
    private boolean loading;
    public void setMode(Short mode) {
        this.mode = mode;
        this.modeType = DevpModeType.get(mode);
    }
    public void setState(Short state) {
        this.state = state;
        this.stateType = DevpStateType.get(state);
    }
    public void setWorkIo(Short workIo) {
        this.workIo = workIo;
        this.workType = DevpWorkType.get(workIo);
    }
    public void setRequestIo(Short requestIo) {
        this.requestIo = requestIo;
        this.requestType = DevpRequestType.get(requestIo);
    }
    public void setTrayIo(Short trayIo) {
        this.trayIo = trayIo;
        this.trayType = DevpTrayType.get(trayIo);
    }
    public void setLocIo(Short locIo) {
        this.locIo = locIo;
        this.locType = DevpLocType.get(locIo);
    }
    // 可入
    private boolean inEnable;
    // 可出
    private boolean outEnable;
    // 空板信号
    private boolean emptyMk;
    // 满托盘
    private boolean fullPlt;
    // 高
    private boolean high = false;
    // 低
    private boolean low;
    //agv
    private boolean car;
    // 锁定标记
    private boolean pakMk = true;
@@ -59,11 +88,9 @@
    // 入库暂存数
    private Short inQty;
    // 隔壁站点(台车位置)
    private String nearbySta;
    //指令ID
    private Integer commandId;
    // 外形检测 ------------------------------------------------------------------------
@@ -105,100 +132,34 @@
    private Boolean upcontactErr = false; //顶升电机接触器故障
    private Short agvStartPick; //允许取货
    private Short agvStartPlace; //允许放货
    private Short agvTypeSign; //允许放货
    private Short agvTargetPick; //取货完成
    private Short agvTargetPlace; //放货完成
    private Short agvTypeSignEnd; //放货完成
    private List<Integer> alarm;
    public List<Integer> getAlarm(){
        List<Integer> alarm = new ArrayList<>();
        if (breakerErr){
            alarm.add(1);
    public Boolean isErr(){
        if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){
            return true;
        }else {
            return false;
        }
        if (infraredErr){
            alarm.add(2);
        }
        if (outTimeErr){
            alarm.add(3);
        }
        if (seizeSeatErr){
            alarm.add(4);
        }
        if (wrkYgoodsN){
            alarm.add(5);
        }
        if (inverterErr){
            alarm.add(6);
        }
        if (contactErr){
            alarm.add(7);
        }
        if (upcontactErr){
            alarm.add(8);
        }
        return alarm;
    }
    public Boolean isPakReset(){
        if (workNo == 0 && workType == DevpWorkType.BUSY && requestType != DevpRequestType.IN){
            return true;
        }
        return false;
    }
    public BasDevp toSqlModel(){
        BasDevp basDevp = new BasDevp();
        basDevp.setDevNo(siteId);
        basDevp.setWrkNo(workNo.intValue());
        basDevp.setAutoing(autoing?"Y":"N");
        basDevp.setLoading(loading?"Y":"N");
        if (frontErr){
            basDevp.setStaErr(11);
        }else if (backErr){
            basDevp.setStaErr(12);
        }else if (highErr){
            basDevp.setStaErr(13);
        }else if (leftErr){
            basDevp.setStaErr(14);
        }else if (rightErr){
            basDevp.setStaErr(15);
        }else if (weightErr){
            basDevp.setStaErr(16);
        }else if (barcodeErr){
            basDevp.setStaErr(17);
        }else if (breakerErr){
            basDevp.setStaErr(18);
        }else if (infraredErr){
            basDevp.setStaErr(19);
        }else if (outTimeErr){
            basDevp.setStaErr(110);
        }else if (seizeSeatErr){
            basDevp.setStaErr(111);
        }else if (wrkYgoodsN){
            basDevp.setStaErr(112);
        }else if (inverterErr){
            basDevp.setStaErr(113);
        }else if (contactErr){
            basDevp.setStaErr(114);
        }else if (upcontactErr){
            basDevp.setStaErr(115);
        }else {
            if (!loading){
                basDevp.setStaErr(0);
            }
        }
        basDevp.setInEnable(inEnable?"Y":"N");
        basDevp.setOutEnable(outEnable?"Y":"N");
        basDevp.setAutoing(stateType == DevpStateType.AUTO?"Y":"N");
        basDevp.setLoading(workType == DevpWorkType.BUSY?"Y":"N");
        basDevp.setInEnable(requestType == DevpRequestType.IN?"Y":"N");
        basDevp.setOutEnable(requestType == DevpRequestType.OUT?"Y":"N");
        basDevp.setLocType1((short) 0);  // 高低类型{0:未知,1:低库位,2:高库位}
        basDevp.setLocType2((short) 0);  // 宽窄类型{0:未知,1:窄库位,2:宽库位}
        basDevp.setLocType3((short) 0);  // 轻重类型{0:未知,1:轻库位,2:重库位}
        basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
        basDevp.setInQty(inQty !=null ?(int)inQty : 0);
//        basDevp.setAgvStartPick(agvStartPick.intValue());
//        basDevp.setAgvStartPlace(agvStartPlace.intValue());
        basDevp.setLocType1(DevpLocType.get(locIo).id.shortValue());
//        basDevp.setInQty(inQty !=null ?(int)inQty : 0);
        return basDevp;
    }