自动化立体仓库 - WMS系统
skyouc
9 天以前 34aa40fffdda9155e77a7991ca8c7691102bb0b8
src/main/java/com/zy/asrs/utils/Utils.java
@@ -7,6 +7,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.RowLastno;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.RowLastnoService;
import com.zy.common.CodeBuilder;
import com.zy.common.model.LocDetlDto;
@@ -16,10 +17,13 @@
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * Created by vincent on 2020/8/27
@@ -47,6 +51,26 @@
            }
            return msgBuilder.toString();
        }
    }
    public static boolean isValidFormat(String dateStr, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setLenient(false); // 严格模式,必须完全匹配格式
        try {
            sdf.parse(dateStr);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }
    public static Date getFormateDate(String datestr) {
        //字符串转日期
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse(datestr, dateTimeFormatter);
        Instant instant = parse.atZone(ZoneId.systemDefault()).toInstant();
        Date date = Date.from(instant);
        return date;
    }
    /**
@@ -124,8 +148,40 @@
    public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
        int row = getRow(deepLoc);
        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
        // 奇数排(1, 3...)对应的浅库位是 row + 1
        // 偶数排(2, 4...)对应的浅库位是 row - 1
        int shallowRow = (remainder % 2 != 0) ? (row + 1) : (row - 1);
        return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
    }
    /**
     * 获取 深库位对应的浅库位号
     */
    public static String getShallowLoc(String deepLoc, List<Integer> doubleLocs) {
        LocMastService locService = SpringUtils.getBean(LocMastService.class);
        LocMast depLoc = locService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", deepLoc));
        int row;
        if (depLoc.getRow1() != 1) {
            row = depLoc.getRow1() - 1;
        } else {
            row = depLoc.getRow1();
        }
        boolean contains = doubleLocs.contains(row);
        LocMast shallowLoc = null;
        if (!contains) {
            shallowLoc = locService.selectOne(new EntityWrapper<LocMast>()
                    .eq("row1", row)
                    .eq("bay1", depLoc.getBay1())
                    .eq("lev1", depLoc.getLev1())
            );
        } else {
            shallowLoc = locService.selectOne(new EntityWrapper<LocMast>()
                    .eq("row1", depLoc.getRow1() + 1)
                    .eq("bay1", depLoc.getBay1())
                    .eq("lev1", depLoc.getLev1())
            );
        }
        return shallowLoc.getLocNo();
    }
    /**
@@ -133,7 +189,7 @@
     */
    public static Integer getShallowRow(SlaveProperties slaveProperties, Integer deepRow) {
        int remainder = (int) Arith.remainder(deepRow, slaveProperties.getGroupCount());
        return remainder == 1 ? (deepRow + 1) : (deepRow - 1);
        return (remainder % 2 != 0) ? (deepRow + 1) : (deepRow - 1);
    }
    /**
@@ -280,7 +336,8 @@
            case 2://经典单伸库位(2排货架)
                return LocNecessaryParametersDoubleExtension2(rowLastno, curRow, crnNumber); //已完善
            case 3://经典单双伸库位  左单右双(小单大双)
                return LocNecessaryParametersDoubleExtension3(rowLastno, curRow, crnNumber); //未完善
                return LocNecessaryParametersDoubleExtension(rowLastno, curRow, crnNumber); //已完善
//            return LocNecessaryParametersDoubleExtension3(rowLastno, curRow, crnNumber); //未完善
            case 4://经典单双伸库位  左双右单(小双大单)
                return LocNecessaryParametersDoubleExtension4(rowLastno, curRow, crnNumber); //未完善
            case 5://双工位单伸库位(4排货架)
@@ -476,7 +533,7 @@
            }
            if ((curRow - sRow) % 4 == 0) {
                necessaryParameters[1] = curRow;    //curRow   最深库位排
                necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo - 1;     //crnNo     堆垛机号
                necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = curRow + 1;    //nearRow  最浅库位排
            } else if ((curRow - sRow + 1) % 4 == 0) {
                necessaryParameters[1] = curRow;    //curRow   最深库位排
@@ -631,4 +688,15 @@
        return result;
    }
    /**
     * 日期转换为字符串
     * @param date 日期
     * @param format 格式
     * @return 字符串
     */
    public static String dateToStr(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
}