Junjie
2023-04-10 d91105438a87e013c6de439af89e49f055827b65
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -1,7 +1,9 @@
package com.zy.core.model.protocol;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasShuttleErr;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.service.BasShuttleErrService;
import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.service.LocMastService;
import com.zy.core.News;
@@ -38,6 +40,12 @@
     * 当前小车状态(内部自我维护)
     */
    private Integer protocolStatus;
//    /**
//     * 小车当前是否有货
//     * true:有货,false:无货
//     */
//    private Boolean loading = false;
    /**
     * 当前小车状态枚举
@@ -96,6 +104,26 @@
     * Plc输出状态IO
     */
    private Short plcOutputStatusIO;
    /**
     * Plc输出状态IO-顶升位
     */
    private Boolean plcOutputLift;
    /**
     * Plc输出状态IO-换向位
     */
    private Boolean plcOutputTransfer;
    /**
     * Plc输出状态IO-抱闸位
     */
    private Boolean plcOutputBrake;
    /**
     * Plc输出状态IO-充电位
     */
    private Boolean plcOutputCharge;
    /**
     * 错误信息码
@@ -230,6 +258,48 @@
        }
    }
    // 是否处于空闲待命状态,传入的taskNo和当前taskNo相同时允许放行
    public Boolean isIdle(Short taskNo) {
        boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE)
                && this.pakMk.equals(true)
                && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
                && (this.taskNo == 0 || this.taskNo == taskNo)
                ;
        if (!res) {
            return res;
        } else {
            // 电量
            try {
                Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine();
                return this.getBatteryPower$() > chargeLine;
            } catch (Exception e) {
                News.error("fail", e);
                return false;
            }
        }
    }
    // 是否满足充电状态
    public Boolean isRequireCharge() {
        boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE)
                && this.pakMk.equals(true)
                && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
                && this.taskNo == 0
                ;
        if (!res) {
            return res;
        } else {
            // 电量小于阈值或电压小于48V,需要进行充电
            try {
                Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine();
                return this.getBatteryPower$() < chargeLine || this.currentVoltage < 480;
            } catch (Exception e) {
                News.error("fail", e);
                return false;
            }
        }
    }
    //通过当前二维码获取当前库位号
    public String getCurrentLocNo() {
        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
@@ -244,4 +314,13 @@
        return currentLocMast.getLocNo();
    }
    public String getStatusErrorCode$() {
        BasShuttleErrService basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class);
        BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(this.statusErrorCode.intValue());
        if (basShuttleErr == null) {
            return null;
        }
        return basShuttleErr.getErrName();
    }
}