自动化立体仓库 - WCS系统
#
Junjie
2023-11-22 ac149f8a32daf67f543d54b41e371906b69438e0
src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.SpringUtils;
@@ -20,6 +21,7 @@
import com.zy.common.utils.NavigatePositionConvert;
import com.zy.common.utils.NavigateUtils;
import com.zy.common.utils.ShuttleDispatchUtils;
import com.zy.core.DevpThread;
import com.zy.core.Slave;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
@@ -32,15 +34,13 @@
import com.zy.core.model.command.ShuttleCommand;
import com.zy.core.model.protocol.NyShuttleProtocol;
import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.NyShuttleThread;
import com.zy.core.thread.ShuttleThread;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
/**
 * Created by vincent on 2020/8/27
@@ -98,21 +98,6 @@
    public static Integer getGroupRow(String locNo, Boolean pakin){
        int row = getRow(locNo);
        return getGroupRow(row, pakin);
    }
    public static List<String> getGroupLocNo(String locNo){
        int row = getRow(locNo);
        List<String> result = new ArrayList<>();
        if (FIRST_GROUP_ROW_LIST.contains(row)) {
            for (Integer groupRow : FIRST_GROUP_ROW_LIST) {
                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
            }
        } else if (SECOND_GROUP_ROW_LIST.contains(row)) {
            for (Integer groupRow : SECOND_GROUP_ROW_LIST) {
                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
            }
        }
        return result;
    }
    public static Integer getGroupRow(Integer row, Boolean pakin) {
@@ -370,6 +355,54 @@
        throw new RuntimeException("库位解析异常");
    }
    /**
     * 获取外侧方向的库位组
     * @param locNo 库位号
     */
    public static List<String> getGroupOuterLoc(String locNo){
        int row = getRow(locNo);
        int bay = getBay(locNo);
        //(1,3,4,10,11)没有外侧方向库位组,(13,14,16)59列之内没有外侧方向库位组
        if (FIRST_GROUP_ROW_LIST.contains(row)) {//1排
            return new ArrayList<>();
        }
        if (SECOND_GROUP_ROW_LIST.contains(row)) {//3-4排
            return new ArrayList<>();
        }
        if (THIRD_GROUP_ROW_LIST.contains(row)) {//6-7排
            List<String> result = new ArrayList<>();
            for (Integer row0 : THIRD_GROUP_ROW_LIST) {
                if (row0 < row) {
                    result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
                }
            }
            return result;
        }
        if (FOURTH_GROUP_ROW_LIST.contains(row)) {//8排
            return new ArrayList<>();
        }
        if (FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11排
            return new ArrayList<>();
        }
        if (SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16排59-61列外侧方向库位组
            List<String> result = new ArrayList<>();
            for (Integer row0 : SIXTH_GROUP_ROW_LIST) {
                if (row0 < row) {
                    result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
                }
            }
            return result;
        }
        if (SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14排59列之内没有外侧方向库位组
            return new ArrayList<>();
        }
        if (EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16排59列之内没有外侧方向库位组
            return new ArrayList<>();
        }
        throw new RuntimeException("库位解析异常");
    }
    //获取除白名单外的指定楼层全部穿梭车xy坐标点
    public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) {
        BasShuttleService basShuttleService = SpringUtils.getBean(BasShuttleService.class);
@@ -547,4 +580,59 @@
        return null;
    }
    //通过提升机号和楼层获取出入库模式
    public static Integer getOutInModelByLift(Integer liftNo, Integer lev) {
        ArrayList<Integer> lev1 = new ArrayList<Integer>() {{
            add(100);add(103);
            add(105);
        }};
        ArrayList<Integer> lev2 = new ArrayList<Integer>() {{
            add(200);add(203);
            add(205);
        }};
        ArrayList<Integer> lev3 = new ArrayList<Integer>() {{
            add(341);add(346);
        }};
        Integer staNo = null;
        if (lev <= 4) {
            staNo = lev1.get(liftNo - 1);
        } else if (lev >= 5 && lev <= 7) {
            staNo = lev2.get(liftNo - 1);
        } else if ((lev >=8 && lev <= 10) && liftNo != 1) {
            staNo = lev3.get(liftNo - 2);
        }
        if (staNo != null) {
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
            StaProtocol staProtocol = devpThread.getStation().get(staNo);
            if (staProtocol == null) {
                return null;
            }
            if (staNo == 100 || staNo == 200) {//1号提升机100站和200站默认全是出库模式
                return 2;//出库模式
            }
            if (staNo == 341) {
                return 1;//341站默认只能入库模式
            }
            if (staProtocol.getOutInModel() == null) {
                return null;//没有出入库信号
            }
            return staProtocol.getOutInModel().intValue();
        }
        return null;
    }
    public static void wapperSetCondition(Wrapper wrapper, String column, String condition){
        if(Cools.isEmpty(condition) || "null".equals(condition)){
            wrapper.andNew().eq(column,"").or().isNull(column);
        }else {
            wrapper.eq(column,condition);
        }
    }
}