自动化立体仓库 - WCS系统
#
zjj
2024-10-12 dd7c162741e0bd7d559432bd385eaf1fa85892c1
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -1,6 +1,8 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasDevp;
import com.zy.core.enums.CrnModeType;
import com.zy.core.enums.DevpType.*;
import lombok.Data;
/**
@@ -8,56 +10,157 @@
 * Created by vincent on 2020/8/6
 */
@Data
public class StaProtocol {
public class StaProtocol implements Cloneable {
    // 站点编号
    private Integer siteId;
    // ----------------------------------------------------------------
    // 工作号
    private Short workNo = 0;
    private Integer workNo = 0;
    // ----------------------------------------------------------------
    // 目标站
    private Short staNo;
    // ----------------------------------------------------------------
    // 自动
    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;
    // 需求1
    private boolean inreq1;
    // 锁定标记
    private boolean pakMk = true;
    // 台车位置
    private Integer position;
    // 入库暂存数
    private Short inQty;
    // 外形检测 ------------------------------------------------------------------------
    // 前超限
    private boolean frontErr = false;
    // 后超限
    private boolean backErr = false;
    // 高超限
    private boolean highErr = false;
    // 左超限
    private boolean leftErr = false;
    // 右超限
    private boolean rightErr = false;
    // 超重
    private boolean weightErr = false;
    // 扫码失败
    private boolean barcodeErr = false;
    //故障-----------------------------------------------------------------------
    private Boolean breakerErr = false; //断路器故障
    private Boolean infraredErr = false; //光电异常
    private Boolean outTimeErr = false; //运行超时
    private Boolean seizeSeatErr = false; //占位超时
    private Boolean wrkYgoodsN = false;//有任务无货故障
    private Boolean inverterErr = false; //变频器故障
    private Boolean contactErr = false; //电机接触器故障
    private Boolean upcontactErr = false; //顶升电机接触器故障
    public Boolean isErr(){
        if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){
            return true;
        }else {
            return false;
        }
    }
    public BasDevp toSqlModel(){
        BasDevp basDevp = new BasDevp();
        basDevp.setDevNo(siteId);
        basDevp.setWrkNo(workNo.intValue());
        // 站点 todo:luxiaotao
        basDevp.setAutoing(autoing?"Y":"N");
        basDevp.setLoading(loading?"Y":"N");
        basDevp.setInEnable(inEnable?"Y":"N");
        basDevp.setOutEnable(outEnable?"Y":"N");
        basDevp.setInreq1(inreq1?"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(DevpLocType.get(locIo).id.shortValue());
        basDevp.setInQty(inQty !=null ?(int)inQty : 0);
        return basDevp;
    }
    @Override
    public StaProtocol clone() {
        try {
            return (StaProtocol) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}