#
vincentlu
2025-03-27 cd67e854d4715bc92a16dc7bffdbde7be1da9957
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java
@@ -146,7 +146,7 @@
        }
        if (null != codeId) {
            Code currCode = codeService.getById(codeId);
            Code currCode = codeService.getCacheById(codeId);
            Double[] startPos = new Double[]{currCode.getX(), currCode.getY()};
            // checkout one funSta which is the closest
@@ -155,10 +155,10 @@
            funcStaList.sort(new Comparator<FuncSta>() {
                @Override
                public int compare(FuncSta o1, FuncSta o2) {
                    Code o1Code = codeService.getById(o1.getCode());
                    Code o1Code = codeService.getCacheById(o1.getCode());
                    int o1Distance = CommonUtil.calcDistance(startPos, new Double[]{o1Code.getX(), o1Code.getY()});
                    Code o2Code = codeService.getById(o2.getCode());
                    Code o2Code = codeService.getCacheById(o2.getCode());
                    int o2Distance = CommonUtil.calcDistance(startPos, new Double[]{o2Code.getX(), o2Code.getY()});
                    return o1Distance - o2Distance;
@@ -171,6 +171,37 @@
    }
    @Override
    public FuncSta checkoutFurthestFunSta(Long codeId, List<FuncSta> funcStaList) {
        if (Cools.isEmpty(funcStaList)) {
            return null;
        }
        if (null != codeId) {
            Code currCode = codeService.getCacheById(codeId);
            Double[] startPos = new Double[]{currCode.getX(), currCode.getY()};
            // checkout one funSta which is the closest
            // compare => compare返回负数,则排在集合前面 (asc)
            funcStaList.sort(new Comparator<FuncSta>() {
                @Override
                public int compare(FuncSta o1, FuncSta o2) {
                    Code o1Code = codeService.getCacheById(o1.getCode());
                    int o1Distance = CommonUtil.calcDistance(startPos, new Double[]{o1Code.getX(), o1Code.getY()});
                    Code o2Code = codeService.getCacheById(o2.getCode());
                    int o2Distance = CommonUtil.calcDistance(startPos, new Double[]{o2Code.getX(), o2Code.getY()});
                    return o2Distance - o1Distance;
                }
            });
        }
        return funcStaList.stream().findFirst().orElse(null);
    }
    @Override
    public Boolean isCanBeIdle(FuncSta funcSta) {
        Agv agv;
        switch (Objects.requireNonNull(FuncStaType.query(funcSta.getType()))) {