From bda52da89628d1587ab804510f9995c671a318ca Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期日, 07 四月 2024 14:49:19 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java | 146 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 146 insertions(+), 0 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 81dae25..1a3efdc 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 @@ -1,9 +1,80 @@ package com.zy.asrs.wcs.core.utils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.Task; +import com.zy.asrs.wcs.core.entity.TaskSerialNo; +import com.zy.asrs.wcs.core.service.TaskSerialNoService; +import com.zy.asrs.wcs.core.service.TaskService; +import com.zy.asrs.wcs.rcs.cache.SlaveConnection; +import com.zy.asrs.wcs.rcs.entity.Device; +import com.zy.asrs.wcs.rcs.entity.DeviceType; +import com.zy.asrs.wcs.rcs.model.enums.SlaveType; +import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; +import com.zy.asrs.wcs.rcs.service.DeviceService; +import com.zy.asrs.wcs.rcs.service.DeviceTypeService; +import com.zy.asrs.wcs.rcs.thread.ShuttleThread; + import java.util.ArrayList; import java.util.List; public class Utils { + + public static final String _LINK = "-"; + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 鎺� + */ + public static int getRow(String locNo) { + if (!Cools.isEmpty(locNo)) { + String[] split = locNo.split(_LINK); + return Integer.parseInt(split[0]); + } + throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 鍒� + */ + public static int getBay(String locNo) { + if (!Cools.isEmpty(locNo)) { + String[] split = locNo.split(_LINK); + return Integer.parseInt(split[1]); + } + throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 灞� + */ + public static int getLev(String locNo) { + if (!Cools.isEmpty(locNo)) { + String[] split = locNo.split(_LINK); + return Integer.parseInt(split[2]); + } + throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + + public static String getLocNo(Number row, Number bay, Number lev) { + return row + _LINK + bay + _LINK + lev; +// return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); + } + + public static String zerofill(String msg, Integer count){ + if (msg.length() == count){ + return msg; + } else if (msg.length() > count){ + return msg.substring(0, 16); + } else { + StringBuilder msgBuilder = new StringBuilder(msg); + for (int i = 0; i<count-msg.length(); i++){ + msgBuilder.insert(0,"0"); + } + return msgBuilder.toString(); + } + } //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐� public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) { @@ -38,4 +109,79 @@ return list; } + public static boolean hasShuttleInLoc(String locNo, Long deviceId) { + DeviceTypeService deviceTypeService = SpringUtils.getBean(DeviceTypeService.class); + DeviceService deviceService = SpringUtils.getBean(DeviceService.class); + + DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>() + .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle)) + .eq(DeviceType::getStatus, 1)); + if (deviceType == null) { + return false; + } + + List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() + .eq(Device::getDeviceType, deviceType.getId()) + .eq(Device::getStatus, 1)); + + for (Device device : list) { + if (deviceId.equals(device.getId())) { + 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().equals(locNo)) { + return true; + } + } + + return false; + } + + /** + * 鐢熸垚宸ヤ綔鍙� + * @return taskNo(宸ヤ綔鍙�) + */ + public static int getTaskNo(String flag) { + TaskSerialNoService taskSerialNoService = SpringUtils.getBean(TaskSerialNoService.class); + TaskService taskService = SpringUtils.getBean(TaskService.class); + TaskSerialNo taskSerialNo = taskSerialNoService.getOne(new LambdaQueryWrapper<TaskSerialNo>() + .eq(TaskSerialNo::getFlag, flag) + .eq(TaskSerialNo::getStatus, 1)); + if (Cools.isEmpty(taskSerialNo)) { + throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + + int taskNo = taskSerialNo.getTaskNo(); + int sNo = taskSerialNo.getStartNo(); + int eNo = taskSerialNo.getTargetNo(); + taskNo = taskNo >= eNo ? sNo : taskNo + 1; + while (true) { + Task task = taskService.getOne(new LambdaQueryWrapper<Task>() + .eq(Task::getTaskNo, taskNo)); + if (null != task) { + taskNo = taskNo >= eNo ? sNo : taskNo + 1; + } else { + break; + } + } + // 淇敼搴忓彿璁板綍 + if (taskNo > 0){ + taskSerialNo.setTaskNo(taskNo); + taskSerialNoService.updateById(taskSerialNo); + return taskNo; + } + throw new CoolException("宸ヤ綔鍙风敓鎴愬け璐�"); + } + } -- Gitblit v1.9.1