1
2 天以前 aad5ff1dbc5fb61ad5a01d13573560ed5aae9b04
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -1,17 +1,32 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasDevp;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
 * 输送线plc单个站点详细信息
 * Created by vincent on 2020/8/6
 */
@Data
public class StaProtocol {
public class StaProtocol implements Cloneable {
    // 站点编号
    private Integer siteId;
    // ----------------------------------------------------------------
    // 工作号
    private Integer workNo = 0;
    // ----------------------------------------------------------------
    // 目标站
    private Short staNo;
    private String barcode;
    // ----------------------------------------------------------------
    // 自动
    private boolean autoing;
@@ -27,17 +42,135 @@
    // 空板信号
    private boolean emptyMk;
    // 需求1
    private boolean inreq1;
    // 满托盘
    private boolean fullPlt;
    // 高
    private boolean high;
    // 低
    private boolean low;
    // 叠盘叠满
    private boolean full;
    // 锁定标记
    private boolean pakMk;
    private boolean pakMk = true;
    // 工作号
    private Integer workNO;
    // 入库暂存数
    private Short inQty;
    // 目标站
    private Integer staNo;
    // 隔壁站点(台车位置)
    private String nearbySta;
    //lfd入库印记  当stamp>=2时才入库
    private Integer stamp = 0;
    private boolean err = false;
    // 外形检测 ------------------------------------------------------------------------
    // 前超限
    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());
        basDevp.setBarcode(barcode);
        basDevp.setAutoing(autoing?"Y":"N");
        basDevp.setLoading(loading?"Y":"N");
        basDevp.setInEnable(inEnable?"Y":"N");
        basDevp.setOutEnable(outEnable?"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.setBarcode(this.getBarcode());
        return basDevp;
    }
    @Override
    public StaProtocol clone() {
        try {
            return (StaProtocol) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
//    public Integer getNearbySta() {
//        if (getNearbySta == null) return 0;
//
//        // key: 站点号  value: 基准物理位置
//        Map<Integer, Integer> posMap = new HashMap<>();
//        posMap.put(1004, 6534);
//        posMap.put(1007, 33634);
//        posMap.put(1010, 75174);
//        posMap.put(1014, 102124);
//        posMap.put(1018, 138224);
//        posMap.put(1021, 178034);
//        posMap.put(1024, 219684);
//        posMap.put(1028, 246724);
//        posMap.put(1031, 288194);
//        posMap.put(1035, 315204);
//        int tolerance = 50; // 允许误差范围
//
//        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
//            int site = entry.getKey();
//            int basePos = entry.getValue();
//            if (Math.abs(getNearbySta - basePos) <= tolerance) {
//                return site;
//            }
//        }
//
//        return 0; // 没匹配到站点
//    }
}