From 486cea7de8a24d67d17ca73926d982830c15b308 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Thu, 11 Jan 2024 19:39:40 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E5=A0=86=E5=8F=A0=E6=9C=BA=E5=8F=8C?= =?UTF-8?q?=E5=90=91=E7=82=B9=E4=BD=8D=E5=B9=B3=E5=9D=87=E5=88=86=E9=85=8D?= =?UTF-8?q?=E5=8E=9F=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/service/DeviceAssignedService.java | 4 +- .../impl/DeviceAssignedServiceImpl.java | 38 ++++++---- .../service/InstructionService.java | 37 +++++++++- .../service/impl/InstructionServiceImpl.java | 70 ++++++++++++------- .../org/nl/acs/task/service/TaskService.java | 44 +++++++++++- .../task/service/impl/TaskServiceImpl.java | 58 ++++++++++++++- .../service/quartz/task/CreateDDJInst.java | 2 +- .../src/views/acs/config/assigned/index.vue | 10 +-- 8 files changed, 209 insertions(+), 54 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceAssignedService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceAssignedService.java index e65b114..03c1224 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceAssignedService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/DeviceAssignedService.java @@ -154,8 +154,8 @@ public interface DeviceAssignedService extends CommonService { /** * queryAssignedBydevice * @param device_code - * @param task_nextdeice_code + * @param task_nextDeice_code * @return */ - List queryAssignedBydevice(String device_code, String task_nextdeice_code); + List queryAssignedByDevice(String device_code, String task_nextDeice_code); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceAssignedServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceAssignedServiceImpl.java index 9bf5cbc..9f79155 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceAssignedServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceAssignedServiceImpl.java @@ -1,14 +1,11 @@ package org.nl.acs.device.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.AllArgsConstructor; import org.nl.acs.common.base.CommonFinalParam; @@ -20,8 +17,6 @@ import org.nl.acs.device.service.mapper.DeviceAssignedMapper; import org.nl.acs.common.base.PageInfo; import org.nl.acs.common.base.QueryHelpMybatisPlus; import org.nl.acs.common.base.impl.CommonServiceImpl; -import org.nl.acs.storage_cell.domain.StorageCell; -import org.nl.acs.storage_cell.service.dto.StorageCellDto; import org.nl.acs.utils.ConvertUtil; import org.nl.common.utils.FileUtil; import org.nl.acs.utils.PageUtil; @@ -98,8 +93,6 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl queryAll(Map whereJson, Pageable page) { IPage queryPage = PageUtil.toMybatisPage(page); @@ -137,7 +130,7 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl) whereJson.get("task_nextDevice_code")); String inst_nextdevice = String.join(",", (List) whereJson.get("inst_nextDevice_code")); String assigned_id = whereJson.get("assigned_id").toString(); - param.put("assigned_id",assigned_id); + param.put("assigned_id", assigned_id); param.put("device_code", device_code); param.put("task_nextDevice_code", task_nextdevice.toString()); param.put("inst_nextDevice_code", inst_nextdevice.toString()); @@ -221,12 +214,29 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl queryAssignedBydevice(String device_code, String task_nextdeice_code) { - - List list = new LambdaQueryChainWrapper<>(deviceAssignedMapper) + public List queryAssignedByDevice(String device_code, String task_nextDeice_code) { + List oldList = new LambdaQueryChainWrapper<>(deviceAssignedMapper) .eq(DeviceAssigned::getDevice_code, device_code) - .eq(DeviceAssigned::getTask_nextDevice_code, task_nextdeice_code) .list(); - return ConvertUtil.convertList(list, DeviceAssignedDto.class); + List newList = new ArrayList<>(); + Optional + .ofNullable(oldList) + .orElse(new ArrayList<>()) + .stream() + .forEach(olDeviceAssigned -> { + Arrays.stream((olDeviceAssigned.getTask_nextDevice_code() == null ? "" : olDeviceAssigned.getTask_nextDevice_code()).split(",")) + .forEach(task_code -> { + if (task_code.equals(task_nextDeice_code)) { + DeviceAssigned deviceAssigned = new DeviceAssigned(); + deviceAssigned.setAssigned_id(olDeviceAssigned.getAssigned_id()); + deviceAssigned.setDevice_code(olDeviceAssigned.getDevice_code()); + deviceAssigned.setInst_nextDevice_code(olDeviceAssigned.getInst_nextDevice_code()); + deviceAssigned.setTask_nextDevice_code(task_nextDeice_code); + deviceAssigned.setParam(olDeviceAssigned.getParam()); + newList.add(deviceAssigned); + } + }); + }); + return ConvertUtil.convertList(newList, DeviceAssignedDto.class); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 11d4dda..69bf93c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -50,6 +50,7 @@ public interface InstructionService extends CommonService { /** * 根据ID查询 + * * @param id * @return */ @@ -57,6 +58,7 @@ public interface InstructionService extends CommonService { /** * 根据ID更新 + * * @param resources * @return */ @@ -97,6 +99,7 @@ public interface InstructionService extends CommonService { /** * 查询数据分页 + * * @param whereJson * @param page * @return @@ -166,6 +169,7 @@ public interface InstructionService extends CommonService { /** * 根据任务id查询 + * * @param id * @param wherecase * @return @@ -174,6 +178,7 @@ public interface InstructionService extends CommonService { /** * 创建 + * * @param dto * @throws Exception */ @@ -181,6 +186,7 @@ public interface InstructionService extends CommonService { /** * 创建2 + * * @param dto * @throws Exception */ @@ -203,6 +209,7 @@ public interface InstructionService extends CommonService { /** * 多选删除 + * * @param ids * @throws Exception */ @@ -219,6 +226,7 @@ public interface InstructionService extends CommonService { /** * 完成指令 + * * @param id * @throws Exception */ @@ -226,6 +234,7 @@ public interface InstructionService extends CommonService { /** * 完成指令 + * * @param dto * @throws Exception */ @@ -234,6 +243,7 @@ public interface InstructionService extends CommonService { /** * 完成并创建下一条指令 + * * @param dto * @throws Exception */ @@ -242,6 +252,7 @@ public interface InstructionService extends CommonService { /** * 取消指令 + * * @param id * @throws Exception */ @@ -249,6 +260,7 @@ public interface InstructionService extends CommonService { /** * 取消指令 + * * @param id * @throws Exception */ @@ -256,6 +268,7 @@ public interface InstructionService extends CommonService { /** * 取消指令不下发agv + * * @param id * @throws Exception */ @@ -271,6 +284,7 @@ public interface InstructionService extends CommonService { /** * 根据编码查询 + * * @param code * @return */ @@ -318,6 +332,7 @@ public interface InstructionService extends CommonService { /** * 格式化 + * * @param inst * @return */ @@ -364,6 +379,7 @@ public interface InstructionService extends CommonService { /** * 根据编码删除 + * * @param code * @return */ @@ -371,6 +387,7 @@ public interface InstructionService extends CommonService { /** * 创建关联指令 + * * @param type * @param inst * @return @@ -379,12 +396,14 @@ public interface InstructionService extends CommonService { /** * 初始化指令 + * * @param id */ void init(String id); /** * 根据指令某个参数查找指令集合 + * * @param instruction1 * @param flay * @return @@ -394,6 +413,7 @@ public interface InstructionService extends CommonService { /** * 根据条件查询指令 + * * @param whereJson * @return */ @@ -401,14 +421,27 @@ public interface InstructionService extends CommonService { /** * 导出指令记录 + * * @param instList * @param response * @throws IOException */ void downloadInstLogging(List instList, HttpServletResponse response) throws IOException; + /** - * 只完成指令 - * @param inst2 + * 查询是否有相同终点的指令,但是是入库的指令,即指令起点设备类型不是货架 + * + * @param nextDeviceCode + * @return */ + Boolean querySameNextDeviceCodeInstByIn(String nextDeviceCode); + + /** + * 查询是否有相同终点的指令,但是是出库的指令,即指令起点设备类型是货架 + * + * @param nextDeviceCode + * @return + */ + Boolean querySameNextDeviceCodeInstByOut(String nextDeviceCode); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index dc33d3a..aaf136b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -73,6 +73,7 @@ import java.io.IOException; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * @author jiaolm @@ -85,22 +86,24 @@ import java.util.regex.Pattern; public class InstructionServiceImpl extends CommonServiceImpl implements InstructionService, ApplicationAutoInitial { @Autowired - InstructionMapper instructionMapper; + private InstructionMapper instructionMapper; @Autowired - TaskMapper taskMapper; - List instructions = new CopyOnWriteArrayList(); + private TaskMapper taskMapper; @Autowired - DeviceAppService deviceAppService; + private DeviceAppService deviceAppService; @Autowired - NDCAgvService ndcAgvService; + private NDCAgvService ndcAgvService; @Autowired - ISysParamService paramService; + private ISysParamService paramService; @Autowired - RouteLineService routeLineService; + private RouteLineService routeLineService; @Autowired - TaskService taskService; + private TaskService taskService; @Autowired - AcsToLiKuService acsToLiKuService; + private AcsToLiKuService acsToLiKuService; + + private List instructions = new CopyOnWriteArrayList(); + @Override public PageInfo queryAll(InstructionQueryParam query, Pageable pageable) { @@ -1321,22 +1324,13 @@ public class InstructionServiceImpl extends CommonServiceImpl it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - // 处理空盘位站点 - String next_code = inst.getNext_point_code(); - if (next_code.indexOf(".") != -1) { - next_code = next_code.substring(0, next_code.indexOf(".")); - } - if (StrUtil.equals(devicecode, next_code)) { - num = num + 1; - } - } - - return num; + public Integer querySameDestinationInst(String deviceCode) { + return (int) Optional + .ofNullable(this.instructions) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(instruction -> deviceCode.equals(instruction.getNext_point_code().indexOf(".") != -1 ? instruction.getNext_point_code().substring(0, instruction.getNext_point_code().indexOf(".")) : instruction.getNext_point_code())) + .count(); } @Override @@ -1579,7 +1573,7 @@ public class InstructionServiceImpl extends CommonServiceImpl instructionMybatis = instructionMapper.selectList(wrapper); List array = new ArrayList<>(); - if(instructionMybatis.size() > 0){ + if (instructionMybatis.size() > 0) { for (InstructionMybatis inst : instructionMybatis) { JSONObject ins = new JSONObject(); ins.put("instruction_code", inst.getInstruction_code()); @@ -1624,5 +1618,29 @@ public class InstructionServiceImpl extends CommonServiceImpl()) + .stream() + .filter(instruction -> instruction.getNext_device_code().equals(nextDeviceCode) + && !deviceAppService.findDeviceByCode(instruction.getStart_device_code()).getDevice_type().equals(DeviceType.storage.toString())) + .collect(Collectors.toList()) + .isEmpty(); + } + + @Override + public Boolean querySameNextDeviceCodeInstByOut(String nextDeviceCode) { + return Optional + .ofNullable(this.instructions) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(instruction -> instruction.getNext_device_code().equals(nextDeviceCode) + && deviceAppService.findDeviceByCode(instruction.getStart_device_code()).getDevice_type().equals(DeviceType.storage.toString())) + .collect(Collectors.toList()) + .isEmpty(); + } + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index 11782ff..c422828 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -58,6 +58,7 @@ public interface TaskService extends CommonService { /** * 新增数据 + * * @param resources * @return */ @@ -65,6 +66,7 @@ public interface TaskService extends CommonService { /** * 根据id修改数据 + * * @param resources * @return */ @@ -72,6 +74,7 @@ public interface TaskService extends CommonService { /** * 根据id删除数据 + * * @param id * @return */ @@ -79,6 +82,7 @@ public interface TaskService extends CommonService { /** * 批量删除数据 + * * @param ids * @return */ @@ -183,6 +187,7 @@ public interface TaskService extends CommonService { /** * 根据设备号查询未执行的任务 + * * @param device_code * @return */ @@ -190,6 +195,7 @@ public interface TaskService extends CommonService { /** * 根据设备号查询未执行的任务 + * * @param start_device_code * @return List */ @@ -197,6 +203,7 @@ public interface TaskService extends CommonService { /** * 根据设备号查询未执行的任务 + * * @param back_start_device_code * @return List */ @@ -229,6 +236,7 @@ public interface TaskService extends CommonService { /** * 根据关联编号查询非立刻下发的关联任务 + * * @param link_num * @return TaskDto */ @@ -236,6 +244,7 @@ public interface TaskService extends CommonService { /** * 创建 + * * @param dto * @throws Exception */ @@ -243,6 +252,7 @@ public interface TaskService extends CommonService { /** * 常规任务保存 + * * @param json * @throws Exception */ @@ -250,6 +260,7 @@ public interface TaskService extends CommonService { /** * 特殊任务保存 + * * @param json * @throws Exception */ @@ -264,6 +275,7 @@ public interface TaskService extends CommonService { /** * 多选删除 + * * @param ids * @throws Exception */ @@ -278,6 +290,7 @@ public interface TaskService extends CommonService { /** * 取消任务 + * * @param ids * @throws Exception */ @@ -286,6 +299,7 @@ public interface TaskService extends CommonService { /** * 取消任务 + * * @param ids * @throws Exception */ @@ -293,6 +307,7 @@ public interface TaskService extends CommonService { /** * 手动创建指令 + * * @param ids * @return * @throws Exception @@ -301,6 +316,7 @@ public interface TaskService extends CommonService { /** * 手动创建指令 + * * @param inst * @return * @throws Exception @@ -308,8 +324,10 @@ public interface TaskService extends CommonService { Instruction createInst(Instruction inst) throws Exception; - /**' - * 创建指令 + /** + * ' + * 创建指令 + * * @param dto * @return */ @@ -335,6 +353,7 @@ public interface TaskService extends CommonService { /** * 检查是否允许创建任务 + * * @param code * @return */ @@ -342,6 +361,7 @@ public interface TaskService extends CommonService { /** * 从缓存中删除任务 + * * @param code * @return */ @@ -349,6 +369,7 @@ public interface TaskService extends CommonService { /** * 根据容器编号查询任务 + * * @param container_code * @return */ @@ -356,6 +377,7 @@ public interface TaskService extends CommonService { /** * 根据任务编号查询任务 + * * @param task_code * @return */ @@ -472,6 +494,7 @@ public interface TaskService extends CommonService { /** * 查询相同起终任务的数量 + * * @param start_device * @param next_device * @param status @@ -480,9 +503,9 @@ public interface TaskService extends CommonService { Integer querySameDeviceReadyTask(String start_device, String next_device, String status); - /** * 条件查询任务和指令 + * * @param whereJson * @return */ @@ -490,6 +513,7 @@ public interface TaskService extends CommonService { /** * 导出任务树形记录 + * * @param list * @param response * @throws IOException @@ -498,6 +522,7 @@ public interface TaskService extends CommonService { /** * 导出任务记录 + * * @param all * @param response * @throws IOException @@ -506,10 +531,23 @@ public interface TaskService extends CommonService { /** * 查询任务 + * * @param whereJson * @return */ List getTaskList(Map whereJson); List findByStartCodeAndBusy(String deviceCode); + + /** + * 任务平均分配原则 根据任务起点和终点去找对应的指令终点 + * 除了包含之前的分配原则外 + * 新增了立库堆叠机双向点位出入库点位分配的逻辑 + * 即任务信息A->C,则拆分成指令信息为A->B,B->C + * + * @param device_code A + * @param task_nextDeice_code C + * @return 指令终点 B + */ + String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 55b6c25..3a4ab13 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1554,7 +1554,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Override public String queryAssignedByDevice(String device_code, String task_nextdeice_code) { List list = - deviceAssignedService.queryAssignedBydevice(device_code, task_nextdeice_code); + deviceAssignedService.queryAssignedByDevice(device_code, task_nextdeice_code); int flag1 = 0; String flag2 = null; for (int i = 0; i < list.size(); i++) { @@ -1816,4 +1816,60 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return num; } + + @Override + public String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code) { + List list = + deviceAssignedService.queryAssignedByDevice(device_code, task_nextDeice_code); + for (int i = 0; i < list.size(); i++) { + DeviceAssignedDto dto = list.get(i); + String deviceCode = dto.getDevice_code(); + String inst_nextDevice_code = dto.getInst_nextDevice_code(); + JSONObject param = JSON.parseObject(dto.getParam()); + List pathList = this.getPathList(inst_nextDevice_code); + for (int j = 0; j < pathList.size(); j++) { + String inst_next_device_code = pathList.get(i); + String limit = param.getString("limit"); + Boolean inOut = param.getBoolean("inOut"); + if (inOut) { + Device device = deviceAppService.findDeviceByCode(deviceCode); + if (device != null) { + if (StrUtil.equals(device.getDevice_type(), DeviceType.storage.toString())) { + if (instructionService.querySameNextDeviceCodeInstByIn(inst_next_device_code)) { + return inst_next_device_code; + } + } else { + if (instructionService.querySameNextDeviceCodeInstByOut(inst_next_device_code)) { + return inst_next_device_code; + } + } + } + } else { + Integer sameInstNum = instructionService.querySameDestinationInst(inst_next_device_code); + if (sameInstNum >= Integer.parseInt(limit)) { + continue; + } else { + return inst_next_device_code; + } + } + } + } + return null; + } + + /** + * 把多个字符串拼接的inst_nextDevice_code解析成集合 + * + * @param inst_nextDevice_code + * @return + */ + private List getPathList(String inst_nextDevice_code) { + String regEx = "[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】':”“’。、?]"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(inst_nextDevice_code); + String toSpeechText = m.replaceAll("").trim(); + String[] str = toSpeechText.split(","); + List pathList = Arrays.asList(str); + return pathList; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java index 402d3d4..6437c1f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/CreateDDJInst.java @@ -131,7 +131,7 @@ public class CreateDDJInst { /** * 开始平均分配 */ - String this_coevice_code = taskserver.queryAssignedByDevice(start_device_code, next_device_code); + String this_coevice_code = taskserver.queryAssignedByDeviceCode(start_device_code, next_device_code); if (StrUtil.isEmpty(this_coevice_code)) { List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); RouteLineDto routeLineDto1 = shortPathsList.get(0); diff --git a/acs/nladmin-ui/src/views/acs/config/assigned/index.vue b/acs/nladmin-ui/src/views/acs/config/assigned/index.vue index 4efd6d9..6b8baf8 100644 --- a/acs/nladmin-ui/src/views/acs/config/assigned/index.vue +++ b/acs/nladmin-ui/src/views/acs/config/assigned/index.vue @@ -116,10 +116,10 @@ - - - - + + + +