From 3c45d4f9f3aba5bc85a9577e43c0dffc71b93a22 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 10 七月 2025 15:54:27 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/utils/Utils.java | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 101 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index d8dd70e..454a799 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -1,21 +1,26 @@ 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.DeviceConfig; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.service.DeviceConfigService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.service.WrkMastService; +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; import com.zy.core.model.protocol.ShuttleProtocol; -import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.ShuttleThread; 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"); @@ -80,16 +85,42 @@ } //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐� + 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()); + } + + //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐� public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) { - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); + DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); ArrayList<int[]> list = new ArrayList<>(); - for (ShuttleSlave slave : slaveProperties.getShuttle()) { - if (slave.getId().intValue() == whiteShuttle) { + + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { + if (device.getDeviceNo().intValue() == whiteShuttle) { continue;//璺宠繃鐧藉悕鍗� } //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); if (shuttleThread == null) { continue; } @@ -116,12 +147,16 @@ return list; } - //妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� + //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞� public static boolean checkLevHasShuttle(Integer lev) { - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); + WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); + + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); if (shuttleThread == null) { continue; } @@ -131,6 +166,22 @@ } String currentLocNo = shuttleProtocol.getCurrentLocNo(); if (currentLocNo == null) { + continue; + } + + //灏忚溅姝e湪鍏呯數 + if (shuttleThread.isCharging()) { + continue; + } + + //灏忚溅鏈夊厖鐢典换鍔� + WrkMast chargeWorking = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo()); + if (chargeWorking != null) {//宸叉湁鍏呯數浠诲姟 + continue; + } + + //灏忚溅澶勪簬鏁呴殰鐘舵�� + if (shuttleThread.isFault()) { continue; } @@ -152,14 +203,17 @@ return null; } - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); - if (slaveProperties == null) { + DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); + if (deviceConfigService == null) { return null; } + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (String loc : groupLoc) { - for (ShuttleSlave slave : slaveProperties.getShuttle()) { - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + for (DeviceConfig device : shuttleList) { + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); if (shuttleThread == null) { continue; } @@ -175,11 +229,40 @@ if (shuttleProtocol.getCurrentLocNo().equals(loc)) { //瀛樺湪灏忚溅 - return slave.getId(); + return device.getDeviceNo(); } } } 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);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 + if (currentShuttlePath == null) { + continue; + } + Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + if (currentAllDistance < recentDistance) { + recentDistance = currentAllDistance; + recentLocNo = locMast.getLocNo(); + } + } + + return recentLocNo; + } } -- Gitblit v1.9.1