package com.wms_main.repository.utils;
import com.wms_main.model.po.TAppStock;
import java.util.Comparator;

public class LocationIdComparator implements Comparator<TAppStock> {
    @Override
    public int compare(TAppStock s1, TAppStock s2) {
        int[] parts1 = parseLocationId(s1.getLocationId());
        int[] parts2 = parseLocationId(s2.getLocationId());

        // 1. 深度排序 (最后一部分)
        int cmp = Integer.compare(parts1[3], parts2[3]);
        if (cmp != 0) return cmp;

        // 2. 层数排序 (第三部分)
        cmp = Integer.compare(parts1[2], parts2[2]);
        if (cmp != 0) return cmp;

        // 3. 列排序 (第二部分)
        cmp = Integer.compare(parts1[1], parts2[1]);
        if (cmp != 0) return cmp;

        // 4. 排排序 (第一部分)
        return Integer.compare(parts1[0], parts2[0]);
    }

    private int[] parseLocationId(String locationId) {
        // 处理可能的空值
        if (locationId == null || locationId.isEmpty()) return new int[4];

        String[] parts = locationId.split("-");
        int[] result = new int[4];

        try {
            // 处理第一部分（如"A03" -> 提取数字3）
            if (parts.length > 0) {
                String p1 = parts[0].replaceAll("\\D", "");
                result[0] = p1.isEmpty() ? 0 : Integer.parseInt(p1);
            }

            // 处理第二、三、四部分
            for (int i = 1; i <= 3; i++) {
                if (parts.length > i) {
                    result[i] = Integer.parseInt(parts[i]);
                }
            }
        } catch (NumberFormatException e) {
            // 处理格式异常
        }

        return result;
    }
}
