| | |
| | | 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; |
| | |
| | | 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("工作号生成失败"); |
| | | } |
| | | |
| | | } |