#
Junjie
2025-03-26 6be00baf701ae78d7d28a0053ee805f88ea6b50c
src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,9 +1,15 @@
package com.zy.asrs.utils;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.service.LocMastService;
import com.zy.common.model.NavigateNode;
import com.zy.common.model.enums.NavigationMapType;
import com.zy.common.utils.NavigatePositionConvert;
import com.zy.common.utils.NavigateUtils;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.ShuttleSlave;
@@ -13,9 +19,6 @@
import java.text.DecimalFormat;
import java.util.*;
/**
 * Created by vincent on 2020/8/27
 */
public class Utils {
    private static final DecimalFormat fmt = new DecimalFormat("##0.00");
@@ -77,6 +80,29 @@
    public static List<String> getGroupLoc(String locNo) {
        return null;
    }
    //获取除白名单外的指定楼层全部穿梭车xy坐标点
    public static int[] getShuttlePoint(Integer shuttleNo) {
        //获取穿梭车所在节点位置
        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
        if (shuttleThread == null) {
            return null;
        }
        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
        if (shuttleProtocol == null) {
            return null;
        }
        String currentLocNo = shuttleProtocol.getCurrentLocNo();
        if (currentLocNo == null) {
            return null;
        }
        if (shuttleProtocol.getCurrentLocNo() == null) {
            return null;
        }
        return NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());
    }
    //获取除白名单外的指定楼层全部穿梭车xy坐标点
@@ -182,4 +208,33 @@
        return null;
    }
    //获取小车待机位
    public static String getShuttleStandbyLocNo(String locNo) {
        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
        NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                .eq("loc_type", "standby")
                .eq("lev1", Utils.getLev(locNo)));
        if (locMasts.isEmpty()) {
            return null;
        }
        Integer recentDistance = Integer.MAX_VALUE;
        String recentLocNo = null;
        for (LocMast locMast : locMasts) {
            //待机位到目标点距离
            List<NavigateNode> currentShuttlePath = navigateUtils.calc(locNo, locMast.getLocNo(), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(0, Utils.getLev(locNo)), null);//搜索空闲穿梭车,使用正常通道地图
            if (currentShuttlePath == null) {
                continue;
            }
            Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计算当前路径行走总距离
            if (currentAllDistance < recentDistance) {
                recentDistance = currentAllDistance;
                recentLocNo = locMast.getLocNo();
            }
        }
        return recentLocNo;
    }
}