From 06a9757c727c6bc15595d5f56a0e309077025741 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 17 四月 2024 09:22:14 +0800 Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java | 122 +++++++++++++++++++++++++++++++--------- 1 files changed, 95 insertions(+), 27 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java index d308757..6c3b59b 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java @@ -4,9 +4,13 @@ import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.SpringUtils; import com.zy.asrs.framework.exception.CoolException; +import com.zy.asrs.wcs.core.entity.BasLift; import com.zy.asrs.wcs.core.entity.Task; import com.zy.asrs.wcs.core.entity.TaskSerialNo; +import com.zy.asrs.wcs.core.model.NavigateNode; import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; +import com.zy.asrs.wcs.core.model.enums.NavigationMapType; +import com.zy.asrs.wcs.core.service.BasLiftService; import com.zy.asrs.wcs.core.service.TaskSerialNoService; import com.zy.asrs.wcs.core.service.TaskService; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; @@ -77,34 +81,38 @@ //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐� public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) { -// SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); + DeviceService deviceService = SpringUtils.getBean(DeviceService.class); ArrayList<int[]> list = new ArrayList<>(); -// for (ShuttleSlave slave : slaveProperties.getShuttle()) { -// if (slave.getId().intValue() == whiteShuttle) { -// continue;//璺宠繃鐧藉悕鍗� -// } -// -// //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃� -// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); -// if (shuttleThread == null) { -// continue; -// } -// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); -// if (shuttleProtocol == null) { -// continue; -// } -// -// if (shuttleProtocol.getCurrentLocNo() == null) { -// continue; -// } -// -// if (lev != Utils.getLev(shuttleProtocol.getCurrentLocNo())) { -// continue;//妤煎眰涓嶅悓 -// } -// -// int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//閫氳繃搴撲綅鍙疯幏鍙杧y鍧愭爣 -// list.add(xyPosition); -// } + + List<Device> devices = deviceService.list(new LambdaQueryWrapper<Device>() + .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val()) + .eq(Device::getStatus, 1)); + for (Device device : devices) { + if (Integer.parseInt(device.getDeviceNo()) == whiteShuttle) { + continue;//璺宠繃鐧藉悕鍗� + } + + //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue()); + if (shuttleThread == null) { + continue; + } + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null) { + continue; + } + + if (shuttleProtocol.getCurrentLocNo() == null) { + continue; + } + + if (lev != Utils.getLev(shuttleProtocol.getCurrentLocNo())) { + continue;//妤煎眰涓嶅悓 + } + + int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//閫氳繃搴撲綅鍙疯幏鍙杧y鍧愭爣 + list.add(xyPosition); + } return list; } @@ -175,4 +183,64 @@ throw new CoolException("宸ヤ綔鍙风敓鎴愬け璐�"); } + /** + * 妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹� + */ + public static boolean checkShuttleHasBinding(Device device) { + TaskService taskService = SpringUtils.getBean(TaskService.class); + List<Task> tasks = taskService.selectWorkingByShuttle(Integer.parseInt(device.getDeviceNo())); + if (tasks.isEmpty()) { + return false;//鏃犱换鍔$粦瀹� + } + return true;//鏈変换鍔$粦瀹� + } + + /** + * 妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹� + */ + public static boolean checkLiftHasBinding(Integer liftNo) { + TaskService taskService = SpringUtils.getBean(TaskService.class); + List<Task> tasks = taskService.selectWorkingByLift(liftNo); + if (tasks.isEmpty()) { + return false;//鏃犱换鍔$粦瀹� + } + return true;//鏈変换鍔$粦瀹� + } + + /** + * 鑾峰彇璺濈鐩爣搴撲綅鏈�杩戠殑鎻愬崌鏈� + */ + public static Device getRecentTransferLift(String locNo, Integer shuttleNo) { + BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); + DeviceService deviceService = SpringUtils.getBean(DeviceService.class); + if (basLiftService == null) { + return null; + } + + Integer distance = Integer.MAX_VALUE; + Long liftDeviceId = null; + for (BasLift basLift : basLiftService.list(new LambdaQueryWrapper<BasLift>() + .eq(BasLift::getStatus, 1) + .eq(BasLift::getTransfer, 1))) { + int lev = Utils.getLev(locNo); + String liftLocNo = Utils.getLocNo(basLift.getRow(), basLift.getBay(), lev); + List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(locNo))); + Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂� + if (originPathAllDistance < distance) { + distance = originPathAllDistance; + liftDeviceId = basLift.getDeviceId(); + } + } + + if (liftDeviceId == null) { + return null; + } + + Device device = deviceService.getById(liftDeviceId); + if (device == null) { + return null; + } + return device; + } + } -- Gitblit v1.9.1