From 26e993449699efd43a02b54d9fe2d2b87b43875b Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 16 Apr 2024 10:30:49 +0800 Subject: [PATCH 01/10] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E6=89=8B=E6=8C=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E4=BC=98=E5=8C=96agv?= =?UTF-8?q?=E9=A9=B1=E5=8A=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/acs/agv/server/AgvService.java | 1 + .../agv/ndctwo/AgvNdcTwoDeviceDriver.java | 145 ++++++++----- .../StandardOrdinarySiteDeviceDriver.java | 19 +- .../org/nl/acs/task/service/dto/TaskDto.java | 5 + .../task/service/impl/TaskServiceImpl.java | 7 + .../main/java/org/nl/hand/dto/B2HeadDto.java | 37 ++++ .../java/org/nl/hand/dto/HeadDeviceDto.java | 26 +++ .../org/nl/hand/rest/B2HandController.java | 83 ++++++++ .../org/nl/hand/service/B2HandService.java | 25 +++ .../hand/service/impl/B2HandServiceImpl.java | 191 ++++++++++++++++++ 10 files changed, 490 insertions(+), 49 deletions(-) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java index 4ad0de55d..f45fa6cc5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java @@ -1,6 +1,7 @@ package org.nl.acs.agv.server; import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.instruction.domain.InstructionMybatis; import java.util.Map; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 848bfedf6..e9af097f9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -24,6 +24,9 @@ import org.nl.acs.device_driver.two_conveyor.manipulator_agv_station.Manipulator import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.dto.DeviceErrorLogDto; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.impl.InstructionServiceImpl; @@ -57,6 +60,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); + DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); TwoAgvPhase twoAgvPhase = new TwoAgvPhase(); @@ -70,6 +74,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic int phase = 0; int region = 0; int error = 0; + int last_error = 0; private Instruction instruction; String message = null; int x = 0; //x坐标 @@ -218,10 +223,27 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + if (ObjectUtil.isNotEmpty(device.getExtraValue().get("wait")) + && StrUtil.equals("true", device.getExtraValue().get("wait").toString()) + && StrUtil.equals(task.getTask_type(), "1")) { + if (standardOrdinarySiteDeviceDriver.getOption() == 1) { + String task_code = standardOrdinarySiteDeviceDriver.getTask_code(); + log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code); + if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) { + log.info("等待LMS系统进行确认允许取货,设备号{},指令号{},任务号{}", device_code, ikey, task.getTask_code()); + message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey; + logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey); + } else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } + }else { + log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey); + message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey; + logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey); + } + }else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } } else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); @@ -340,10 +362,15 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + if (ObjectUtil.isNotEmpty(this.device.getExtraValue().get("wait")) + && StrUtil.equals("true", this.device.getExtraValue().get("wait").toString()) + && StrUtil.equals(task.getTask_type(), "1")) { + standardOrdinarySiteDeviceDriver.setOption(0); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + }else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } + this.setPhase(phase); } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); @@ -455,10 +482,30 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (StrUtil.equals(agv_inst_type, CommonFinalParam.ONE) || StrUtil.equals(agv_inst_type, "3")) { if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) + && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString()) + && StrUtil.equals(task.getTask_type(), "1")) { + if (standardOrdinarySiteDeviceDriver.getOption() == 1) { + standardOrdinarySiteDeviceDriver.setAgvphase(0); + String task_code = standardOrdinarySiteDeviceDriver.getTask_code(); + log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code); + if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) { + log.info("等待LMS系统进行确认允许取货,设备号{},指令号{},任务号{}", device_code, ikey, task.getTask_code()); + message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey; + logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey); + } else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } + } else { + log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey); + message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey; + logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code()); + + } + }else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); @@ -568,6 +615,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic if (StrUtil.equals(agv_inst_type, CommonFinalParam.ONE) || StrUtil.equals(agv_inst_type, "3")) { if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait")) + && StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString()) + && StrUtil.equals(task.getTask_type(), "1")) { + standardOrdinarySiteDeviceDriver.setOption(0); + }else { + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); standardOrdinarySiteDeviceDriver.setAgvphase(phase); standardOrdinarySiteDeviceDriver.setIndex(index); @@ -651,6 +705,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic weight = agvaddr; inst.setWeight(String.valueOf(weight)); instructionService.update(inst); + + if (ObjectUtil.isNotEmpty(task)) { + logServer.deviceExecuteLog(this.device_code, "", "", "上报满卷重量,weight:" + weight); + message = "上报满卷重量,weight:" + weight + ",指令号:" + ikey; + task.setWeight(String.valueOf(weight)); + task.setCarno(this.device_code); + taskService.update(task); + } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(device_code) @@ -817,9 +879,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic // data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); // } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + this.setPhase(phase); } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); @@ -929,9 +989,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic // data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); // } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + this.setPhase(phase); } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); @@ -1037,9 +1095,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic // data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); // } data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); + this.setPhase(phase); } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); @@ -1130,32 +1186,10 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic last_status = status; } //进入区域(phase值) else if (phase == 0x50) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - region = agvaddr; - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto); } //离开区域(phase值) else if (phase == 0x51) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - region = agvaddr; - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto); } //上报异常信息 @@ -1170,11 +1204,23 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic String info = error.get("info"); this.setErrorInfo(ikey, code, info); } - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto); + if (error != last_error) { + DeviceErrorLogDto dto = new DeviceErrorLogDto(); + dto.setDevice_code(this.getDevice().getDevice_code()); + dto.setError_code(String.valueOf(error_code)); + dto.setError_info(error_message); + deviceErrorLogService.create(dto); + + JSONObject param = new JSONObject(); + param.put("device_code", this.device_code); + param.put("error", error); + param.put("error_msg", error == 0 ? "" : this.getError_message()); + param.put("device_name", this.getDevice().getDevice_name()); + param.put("device_type", "4"); + param.put("product_area", ISysParamService.findByCode("productArea").getValue()); + acsToWmsService.sendDeviceStatus(param); + } + last_error = error; } if (!ObjectUtil.isEmpty(data)) { LuceneLogDto logDto = LuceneLogDto.builder() @@ -1183,11 +1229,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic .build(); luceneExecuteLogService.deviceExecuteLog(logDto); // if (StrUtil.equals(inst.getAgv_system_type(), "2")) { - TwoNDCSocketConnectionAutoRun.write(data); +// TwoNDCSocketConnectionAutoRun.write(data); // } // else if (StrUtil.equals(inst.getAgv_system_type(), "3")) { // TwoNDC2SocketConnectionAutoRun.write(data); // } + if (StrUtil.equals(inst.getAgv_system_type(), "2")) { + TwoNDCSocketConnectionAutoRun.write(data); + } } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 88a1e4c00..1e438a7fd 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.conveyor.standard_ordinary_site; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -61,6 +62,9 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple Boolean iserror = false; Boolean islock = false; + // 1 上位系统允许进入 2 上位系统允许离开 + int option = 0; + int branchProtocol = 0; int last_branchProtocol = 0; /** @@ -223,6 +227,14 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple String mode = ""; String action = ""; String move = ""; + String option = ""; + if(this.getOption() == 0){ + option ="禁止进出"; + } else if(this.getOption() == 1){ + option ="允许进入"; + } else if(this.getOption() == 2){ + option ="允许离开"; + } if (this.getMode() == 0) { mode = LangProcess.msg("universal_off-line"); } else if (this.getMode() == 1) { @@ -252,13 +264,18 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple jo.put("isOnline", true); jo.put("error", this.getError()); jo.put("isError", this.getIserror()); + jo.put("option", option); + jo.put("is_click", true); return jo; } @Override public void setDeviceStatus(JSONObject data) { - + String flag = data.getString("option"); + if(StrUtil.isNotEmpty(flag)){ + option = Integer.parseInt(flag); + } } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index 34855a6b5..b5a63553a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -54,6 +54,11 @@ public class TaskDto implements Serializable { */ private String task_status; + /** + * 车号 + */ + private String carno; + /** * 复合任务 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index a4e562884..645951863 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1007,6 +1007,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme map.put("路由方案编码", acsTask.getRoute_plan_code()); map.put("是否需要反馈上位系统", acsTask.getIs_needfeedback()); map.put("备注", acsTask.getRemark()); + map.put("agv车号", acsTask.getCarno()); map.put("是否启用", acsTask.getIs_active()); map.put("是否删除", acsTask.getIs_delete()); map.put("创建者", acsTask.getCreate_by()); @@ -1588,6 +1589,12 @@ public class TaskServiceImpl extends CommonServiceImpl impleme feed_jo.put("task_id", entity.getExt_task_id()); feed_jo.put("task_code", entity.getTask_code()); feed_jo.put("task_status", entity.getTask_status()); + if (ObjectUtil.isNotEmpty(entity.getWeight())) { + feed_jo.put("weight", entity.getWeight()); + } + if (ObjectUtil.isNotEmpty(entity.getCarno())) { + feed_jo.put("car_no", entity.getCarno()); + } JSONArray ja = new JSONArray(); ja.add(feed_jo); //TODO 有需要根据上位系统反馈的信息再做进一步处理 diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java new file mode 100644 index 000000000..2988dec90 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/B2HeadDto.java @@ -0,0 +1,37 @@ +package org.nl.hand.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author : TuQiang + * @create 2024/4/15 13:59 + */ +@Data +public class B2HeadDto implements Serializable { + /** + * 起始设备编码1 + */ + private String start_device_code1; + + /** + * 目标设备编码1 + */ + private String next_device_code1; + + /** + * 起始设备编码2 + */ + private String start_device_code2; + + /** + * 目标设备编码2 + */ + private String next_device_code2; + + /** + * 任务类型 + */ + private String task_type; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java new file mode 100644 index 000000000..7fe53c279 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/dto/HeadDeviceDto.java @@ -0,0 +1,26 @@ +package org.nl.hand.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author : TuQiang + * @create 2024/4/15 15:04 + */ +@Data +public class HeadDeviceDto implements Serializable { + /** + * 设备号 + */ + private String device_code; + + /** + * 操作类型 + * 0-禁止进出; + * 1-允许取放 + * 2-允许离开 + * + */ + private String option; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java new file mode 100644 index 000000000..8d1c518df --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/rest/B2HandController.java @@ -0,0 +1,83 @@ +package org.nl.hand.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.hand.dto.B2HeadDto; +import org.nl.hand.dto.HeadDeviceDto; +import org.nl.hand.dto.RegionDto; +import org.nl.hand.service.B2HandService; +import org.nl.hand.service.HandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author : TuQiang + * @create 2024/4/15 13:50 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "手持接口") +@RequestMapping("api/hands") +@Slf4j +public class B2HandController { + @Autowired + private B2HandService b2HandService; + + @Autowired + private HandService handService; + + @PostMapping("/queryArea") + @Log("查询区域") + @ApiOperation("查询区域") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryArea() { + return new ResponseEntity<>(handService.queryArea(), HttpStatus.OK); + } + + @PostMapping("/queryPointByArea") + @Log("根据区域编码查点位") + @ApiOperation("根据区域编码查点位") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryPointByArea(@RequestBody RegionDto dto) { + String region_code = dto.getRegion_code(); + return new ResponseEntity<>(handService.queryPointByArea(region_code), HttpStatus.OK); + } + + @PostMapping("/callTask") + @Log("手持创建任务") + @ApiOperation("手持创建任务") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity callTask(@RequestBody B2HeadDto dto) { + return new ResponseEntity<>(b2HandService.callTask(dto), HttpStatus.OK); + } + + @PostMapping("/queryDevices") + @Log("查询所有设备") + @ApiOperation("查询所有设备") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity queryDevices() { + return new ResponseEntity<>(b2HandService.queryDevices(), HttpStatus.OK); + } + + @PostMapping("/updateDeviceStatus") + @Log("更新设备状态") + @ApiOperation("更新设备状态") + @SaIgnore + //@PreAuthorize("@el.check('sect:list')") + public ResponseEntity updateDeviceStatus(@RequestBody HeadDeviceDto dto) { + return new ResponseEntity<>(b2HandService.updateDeviceStatus(dto), HttpStatus.OK); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java new file mode 100644 index 000000000..f28bfaa3d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/B2HandService.java @@ -0,0 +1,25 @@ +package org.nl.hand.service; + +import org.nl.hand.dto.B2HeadDto; +import org.nl.hand.dto.HeadDeviceDto; + +import java.util.Map; + +/** + * @Author : TuQiang + * @create 2024/4/15 13:52 + */ +public interface B2HandService { + + /** + * 手持创建任务 + * + * @param dto + * @return + */ + Map callTask(B2HeadDto dto); + + Map queryDevices(); + + Map updateDeviceStatus(HeadDeviceDto dto); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java new file mode 100644 index 000000000..1d43340c5 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java @@ -0,0 +1,191 @@ +package org.nl.hand.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.common.exception.BadRequestException; +import org.nl.hand.dto.B2HeadDto; +import org.nl.hand.dto.HeadDeviceDto; +import org.nl.hand.service.B2HandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @Author : TuQiang + * @create 2024/4/15 13:52 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class B2HandServiceImpl implements B2HandService { + @Autowired + private TaskService taskserver; + @Autowired + private DeviceService deviceService; + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private InstructionService instructionService; + + @Override + public Map callTask(B2HeadDto dto) { + JSONArray errArr = new JSONArray(); + String start_device_code = dto.getStart_device_code1(); + String next_device_code = dto.getNext_device_code1(); + String start_device_code2 = dto.getStart_device_code2(); + String next_device_code2 = dto.getNext_device_code2(); + String task_type = dto.getTask_type(); + + if (StrUtil.isEmpty(start_device_code)) { + JSONObject json = new JSONObject(); + json.put("message", "起点1不能为空"); + errArr.add(json); + } + if (StrUtil.isEmpty(next_device_code)) { + JSONObject json = new JSONObject(); + json.put("message", "终点1不能为空"); + errArr.add(json); + } + if (StrUtil.isEmpty(task_type)) { + JSONObject json = new JSONObject(); + json.put("message", "任务类型不能为空"); + errArr.add(json); + } + + JSONObject jo = new JSONObject(); + if (StrUtil.equals(task_type, CommonFinalParam.TYPE_ONE)) { + jo.put("start_device_code2", start_device_code2); + jo.put("next_device_code2", next_device_code2); + jo.put("start_point_code2", start_device_code2); + jo.put("next_point_code2", next_device_code2); + } else if (StrUtil.equals(task_type, CommonFinalParam.TYPE_TWO)) { + jo.put("start_device_code2", start_device_code2); + jo.put("next_device_code2", next_device_code2); + jo.put("start_point_code2", start_device_code2); + jo.put("next_point_code2", next_device_code2); + } + jo.put("start_device_code", start_device_code); + jo.put("next_device_code", next_device_code); + jo.put("start_point_code", start_device_code); + jo.put("next_point_code", next_device_code); + jo.put("start_device_code2", start_device_code2); + jo.put("next_device_code2", next_device_code2); + jo.put("start_point_code2", start_device_code2); + jo.put("next_point_code2", next_device_code2); + jo.put("task_type", task_type); + jo.put("agv_system_type", "2"); + jo.put("priority", "1"); + + TaskDto task_dto = jo.toJavaObject(TaskDto.class); + try { + taskserver.create(task_dto); + } catch (Exception e) { +// e.printStackTrace(); + JSONObject json = new JSONObject(); + json.put("message", e.getMessage()); + errArr.add(json); + } + JSONArray data = new JSONArray(); + JSONObject resultJson = new JSONObject(); + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("message", "操作成功"); + resultJson.put("data", data); + } else { + resultJson.put("message", "操作失败"); + resultJson.put("data", data); + } + return resultJson; + } + + @Override + public Map queryDevices() { + JSONArray data = new JSONArray(); + //查询所有生箔区的设备 + List list = deviceService.lambdaQuery() + .eq(Device::getRegion, "2") + .list(); + if (CollectionUtil.isEmpty(list)) { + throw new BadRequestException("未查到该区域的设备!"); + } + + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + for (int i = 0; i < list.size(); i++) { + JSONObject jo = new JSONObject(); + Device device = list.get(i); + String device_id = device.getDevice_id(); + String device_code = device.getDevice_code(); + Device deviceCode = deviceAppService.findDeviceByCode(device_code); + int option = 0; + if (deviceCode.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) deviceCode.getDeviceDriver(); + option = standardOrdinarySiteDeviceDriver.getOption(); + } + String device_name = device.getDevice_name(); + BigDecimal seq_num = device.getSeq_num(); + jo.put("device_id", device_id); + jo.put("device_code", device_code); + jo.put("device_name", device_name); + jo.put("seq_num", seq_num); + jo.put("option", option); + data.add(jo); + } + JSONObject resultJson = new JSONObject(); + resultJson.put("message", "操作成功"); + resultJson.put("data", data); + return resultJson; + } + + @Override + public Map updateDeviceStatus(HeadDeviceDto dto) { + JSONArray errArr = new JSONArray(); + String device_code = dto.getDevice_code(); + String option = dto.getOption(); + if (StrUtil.isEmpty(device_code)) { + JSONObject json = new JSONObject(); + json.put("message", "设备号不能为空"); + errArr.add(json); + } + if (StrUtil.isEmpty(option)) { + JSONObject json = new JSONObject(); + json.put("message", "操作不能为空"); + errArr.add(json); + } + if (device_code.contains("K")&&(!"1".equals(option))){ + throw new BadRequestException("该设备为空轴位,不能进行该操作"); + } + if (device_code.contains("M")&&(!"2".equals(option))){ + throw new BadRequestException("该设备为满轴位,不能进行该操作"); + } + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + Device device = deviceAppService.findDeviceByCode(device_code); + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); + JSONArray data = new JSONArray(); + JSONObject resultJson = new JSONObject(); + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("message", "操作成功"); + resultJson.put("data", data); + } else { + resultJson.put("message", "操作失败"); + resultJson.put("data", data); + } + return resultJson; + } +} From abf7964c96a201e78e3fb09ced72e52a05a5f233 Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 16 Apr 2024 11:10:30 +0800 Subject: [PATCH 02/10] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E6=89=8B?= =?UTF-8?q?=E6=8C=81=E5=88=A4=E6=96=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/hand/service/impl/B2HandServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java index 1d43340c5..2b97438f6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/B2HandServiceImpl.java @@ -167,12 +167,12 @@ public class B2HandServiceImpl implements B2HandService { json.put("message", "操作不能为空"); errArr.add(json); } - if (device_code.contains("K")&&(!"1".equals(option))){ - throw new BadRequestException("该设备为空轴位,不能进行该操作"); - } - if (device_code.contains("M")&&(!"2".equals(option))){ + if (device_code.contains("M")&&(!"1".equals(option))){ throw new BadRequestException("该设备为满轴位,不能进行该操作"); } + if (device_code.contains("K")&&(!"2".equals(option))){ + throw new BadRequestException("该设备为空轴位,不能进行该操作"); + } StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; Device device = deviceAppService.findDeviceByCode(device_code); standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); From 8ef027be85bbfbcc7fc7d2309dc18c600779b82e Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 16 Apr 2024 11:22:48 +0800 Subject: [PATCH 03/10] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=82=B9=E4=BD=8D=E7=8A=B6=E6=80=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/ext/wms/rest/WmsToAcsController.java | 7 ++ .../acs/ext/wms/service/WmsToAcsService.java | 8 ++ .../wms/service/impl/WmsToAcsServiceImpl.java | 80 +++++++++++++++++++ 3 files changed, 95 insertions(+) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 13b11b14b..9265ed8b0 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -54,6 +54,13 @@ public class WmsToAcsController { return new ResponseEntity<>(wmstoacsService.updateDeviceGoodsFromWms(whereJson), HttpStatus.OK); } + @PostMapping("/updateTask") + @Log(value = "WMS更新任务点位状态") + @SaIgnore + public ResponseEntity updateTask(@RequestBody String whereJson){ + return new ResponseEntity<>(wmstoacsService.updateTask(whereJson), HttpStatus.OK); + } + @PostMapping("/areaControl") @Log(value = "区域控制") public ResponseEntity areaControl(@RequestBody JSONObject whereJson) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index ec27c8d44..b684c5951 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -25,6 +25,14 @@ public interface WmsToAcsService { */ CreateTaskResponse crateTask(List reqs); + /** + * 更新任务点位状态 + * + * @param whereJson 条件 + * @return Map + */ + Map updateTask(String whereJson); + /** * 取消任务 diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index f158dceb0..bacf82a46 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -15,7 +15,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; import org.nl.acs.device_driver.conveyor.siemens_conveyor.SiemensConveyorDeviceDriver; +import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.one_manipulator.box_package_manipulator.BoxPackageManipulatorDeviceDriver; import org.nl.acs.device_driver.conveyor.box_palletizing_manipulator.BoxPalletizingManipulatorDeviceDriver; import org.nl.acs.device_driver.paper_tube_device2.PaperTubeConveyor2DeviceDriver; @@ -34,6 +36,7 @@ import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.ext.wms.service.WmsToAcsService; import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.storage_cell.domain.StorageCell; import org.nl.acs.storage_cell.service.mapper.StorageCellMapper; @@ -68,6 +71,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Autowired private LuceneExecuteLogService luceneExecuteLogService; + @Autowired + private InstructionService instructionService; + @Autowired private AcsToLiKuService acsToLiKuService; @@ -387,6 +393,80 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return null; } + @Override + public Map updateTask(String whereJson) { + JSONArray datas = JSONArray.parseArray(whereJson); + log.info("updateTask--------------:输入参数" + datas.toString()); + JSONArray errArr = new JSONArray(); + if (datas.size() > 0) { + for (int i = 0; i < datas.size(); i++) { + JSONObject jsonObject = datas.getJSONObject(i); + String device_code = jsonObject.getString("device_code"); + String task_code = jsonObject.getString("task_code"); + //1-允许取放; 2-允许离开 + String option = jsonObject.getString("option"); + Instruction inst = instructionService.findByTaskcode(task_code); + if (ObjectUtil.isEmpty(inst)) { + JSONObject jo = new JSONObject(); + jo.put("task_code", task_code); + jo.put("message", "未找到对应任务"); + errArr.add(jo); + continue; + } else { + String carNo = inst.getCarno(); + if (ObjectUtil.isEmpty(carNo)) { + JSONObject jo = new JSONObject(); + jo.put("task_code", task_code); + jo.put("message", "未找到任务对应车号"); + errArr.add(jo); + continue; + } else { + Device device = deviceAppService.findDeviceByCode(carNo); + AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; + if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { + agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); + int phase = agvNdcTwoDeviceDriver.getPhase(); + if (phase == 0x03 || phase == 0x05 || phase == 0x08) { + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + Device device_k = deviceAppService.findDeviceByCode(device_code + "_K"); + Device device_m = deviceAppService.findDeviceByCode(device_code + "_M"); + if (device_k.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_k.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); + standardOrdinarySiteDeviceDriver.setTask_code(task_code); + } + if (device_m.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_m.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); + standardOrdinarySiteDeviceDriver.setTask_code(task_code); + } + } else { + JSONObject jo = new JSONObject(); + jo.put("task_code", task_code); + jo.put("message", "AGV未就绪无法设置"); + errArr.add(jo); + continue; + } + } + } + + } + } + } + JSONObject resultJson = new JSONObject(); + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", "操作成功"); + } else { + resultJson.put("status", HttpStatus.BAD_REQUEST.value()); + resultJson.put("message", "操作失败"); + if (ObjectUtil.isNotEmpty(errArr)) { + resultJson.put("errArr", errArr); + } + } + return resultJson; + } + @Override public org.nl.acs.ext.wms.data.one.CancelTaskResponse cancelFromWms(List reqs) throws Exception { return null; From abbca68cf24924c95d766fb891d68134668bee72 Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 16 Apr 2024 14:45:59 +0800 Subject: [PATCH 04/10] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=82=B9=E4=BD=8D=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/wms/service/impl/WmsToAcsServiceImpl.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index bacf82a46..7f39ab9e7 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -428,15 +428,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { int phase = agvNdcTwoDeviceDriver.getPhase(); if (phase == 0x03 || phase == 0x05 || phase == 0x08) { StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - Device device_k = deviceAppService.findDeviceByCode(device_code + "_K"); - Device device_m = deviceAppService.findDeviceByCode(device_code + "_M"); - if (device_k.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_k.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); - standardOrdinarySiteDeviceDriver.setTask_code(task_code); - } - if (device_m.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_m.getDeviceDriver(); + Device deviceByCode = deviceAppService.findDeviceByCode(device_code); + if (deviceByCode.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) deviceByCode.getDeviceDriver(); standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); standardOrdinarySiteDeviceDriver.setTask_code(task_code); } From 257f8cbeced1240641152e6d51e0573bcd49707e Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 17 Apr 2024 10:39:01 +0800 Subject: [PATCH 05/10] =?UTF-8?q?rev=20=E5=88=A4=E6=96=AD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReturnGoodManipulatorDeviceDriver.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java index 5c413a60e..d55481512 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java @@ -374,15 +374,15 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i throw new BadRequestException("设备:" + nextDevice.getDevice_code() + "未设置电气调度号!"); } - //存在托盘才可以申请任务 + //存在托盘才可以申请任务 不需要这个逻辑,先下发行架任务后送空盘 BeltConveyorDeviceDriver beltConveyorDeviceDriver; - if (nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver(); - if (beltConveyorDeviceDriver.getMove() != 1) { - notCreateInstMessage = "universal_notCreateInstMessage2"; - return false; - } - } +// if (nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { +// beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver(); +// if (beltConveyorDeviceDriver.getMove() != 1) { +// notCreateInstMessage = "universal_notCreateInstMessage2"; +// return false; +// } +// } String taskid = taskDto.getTask_id(); String taskcode = taskDto.getTask_code(); String start_point_code = taskDto.getStart_point_code(); From 5bd72b195484feec5c684bad62fd2123f0262d49 Mon Sep 17 00:00:00 2001 From: yanps Date: Wed, 17 Apr 2024 10:43:13 +0800 Subject: [PATCH 06/10] =?UTF-8?q?opt:=20=E5=8F=A0=E7=9B=98=E8=A1=8C?= =?UTF-8?q?=E6=9E=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/config/application.yml | 2 +- .../main/resources/config/application-dev.yml | 20 ++++++++++++------- .../resources/config/application-prod.yml | 9 ++++++--- .../src/main/resources/config/application.yml | 2 +- acs2/nladmin-ui/.env.production | 4 ++-- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/acs/nladmin-system/src/main/resources/config/application.yml b/acs/nladmin-system/src/main/resources/config/application.yml index f943602c7..cfc52fe40 100644 --- a/acs/nladmin-system/src/main/resources/config/application.yml +++ b/acs/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index e6a974ebe..7a32012dc 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -3,18 +3,24 @@ server: #配置数据源 spring: messages: - basename: language/login/login,language/error/error,language/buss/buss + basename: language/login/login,language/error/error,language/buss/buss,language/monitor/universal/universal,language/monitor/one_device/one_advice,language/monitor/two_device/two_device,language/task/task datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy -# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true -# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true - +## url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +## url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true +# +# username: ${DB_USER:root} +## password: ${DB_PWD:Root.123456} +# password: ${DB_PWD:123456} + # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + # url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} -# password: ${DB_PWD:Root.123456} password: ${DB_PWD:123456} + # password: ${DB_PWD:p@ssw0rd} # 初始连接数 initial-size: 5 # 最小连接数 @@ -168,7 +174,7 @@ sa-token: # ---- 除了以上配置项,你还需要为 Sa-Token 配置http请求处理器(文档有步骤说明) is-read-cookie: true is-print: false -# 未登录 StpUtil.getTokenSession() 设置值,获取值 @SaIgnore 得忽略接口 + # 未登录 StpUtil.getTokenSession() 设置值,获取值 @SaIgnore 得忽略接口 token-session-check-login: false alone-redis: # Redis数据库索引(默认为0) diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml index a3bb23c63..119140a17 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml @@ -1,12 +1,12 @@ server: - port: 8010 + port: 8011 #配置数据源 spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.121}:${DB_PORT:3306}/${DB_NAME:yy_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数 @@ -133,7 +133,7 @@ file: avatarMaxSize: 5 logging: file: - path: /app/jar/logs + path: D:/acs_logProd config: classpath:logback-spring.xml # Sa-Token配置 @@ -157,3 +157,6 @@ sa-token: token-prefix: Bearer is-read-cookie: false is-read-body: false + +agvToAcs: + addr: http://localhost diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 4aaae10db..24d39aee0 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -6,7 +6,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: diff --git a/acs2/nladmin-ui/.env.production b/acs2/nladmin-ui/.env.production index 25a073fbc..d34affad5 100644 --- a/acs2/nladmin-ui/.env.production +++ b/acs2/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://47.97.157.227:8011' +VUE_APP_BASE_API = 'http://10.1.3.97:8011' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://47.97.157.227:8011' +VUE_APP_WS_API = 'ws://10.1.3.97:8011' From 25ceba641bbcdabe2ca109b7c4dfebd34eeeef49 Mon Sep 17 00:00:00 2001 From: yanps Date: Wed, 17 Apr 2024 10:53:06 +0800 Subject: [PATCH 07/10] =?UTF-8?q?Revert=20"opt:=20=E5=8F=A0=E7=9B=98?= =?UTF-8?q?=E8=A1=8C=E6=9E=B6=E4=BC=98=E5=8C=96"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5bd72b195484feec5c684bad62fd2123f0262d49. --- .../src/main/resources/config/application.yml | 2 +- .../main/resources/config/application-dev.yml | 20 +++++++------------ .../resources/config/application-prod.yml | 9 +++------ .../src/main/resources/config/application.yml | 2 +- acs2/nladmin-ui/.env.production | 4 ++-- 5 files changed, 14 insertions(+), 23 deletions(-) diff --git a/acs/nladmin-system/src/main/resources/config/application.yml b/acs/nladmin-system/src/main/resources/config/application.yml index cfc52fe40..f943602c7 100644 --- a/acs/nladmin-system/src/main/resources/config/application.yml +++ b/acs/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 7a32012dc..e6a974ebe 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -3,24 +3,18 @@ server: #配置数据源 spring: messages: - basename: language/login/login,language/error/error,language/buss/buss,language/monitor/universal/universal,language/monitor/one_device/one_advice,language/monitor/two_device/two_device,language/task/task + basename: language/login/login,language/error/error,language/buss/buss datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy -## url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true -## url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true -# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true -# -# username: ${DB_USER:root} -## password: ${DB_PWD:Root.123456} -# password: ${DB_PWD:123456} - # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - # url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + username: ${DB_USER:root} +# password: ${DB_PWD:Root.123456} password: ${DB_PWD:123456} - # password: ${DB_PWD:p@ssw0rd} # 初始连接数 initial-size: 5 # 最小连接数 @@ -174,7 +168,7 @@ sa-token: # ---- 除了以上配置项,你还需要为 Sa-Token 配置http请求处理器(文档有步骤说明) is-read-cookie: true is-print: false - # 未登录 StpUtil.getTokenSession() 设置值,获取值 @SaIgnore 得忽略接口 +# 未登录 StpUtil.getTokenSession() 设置值,获取值 @SaIgnore 得忽略接口 token-session-check-login: false alone-redis: # Redis数据库索引(默认为0) diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml index 119140a17..a3bb23c63 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml @@ -1,12 +1,12 @@ server: - port: 8011 + port: 8010 #配置数据源 spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.121}:${DB_PORT:3306}/${DB_NAME:yy_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数 @@ -133,7 +133,7 @@ file: avatarMaxSize: 5 logging: file: - path: D:/acs_logProd + path: /app/jar/logs config: classpath:logback-spring.xml # Sa-Token配置 @@ -157,6 +157,3 @@ sa-token: token-prefix: Bearer is-read-cookie: false is-read-body: false - -agvToAcs: - addr: http://localhost diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 24d39aee0..4aaae10db 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -6,7 +6,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: diff --git a/acs2/nladmin-ui/.env.production b/acs2/nladmin-ui/.env.production index d34affad5..25a073fbc 100644 --- a/acs2/nladmin-ui/.env.production +++ b/acs2/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://10.1.3.97:8011' +VUE_APP_BASE_API = 'http://47.97.157.227:8011' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://10.1.3.97:8011' +VUE_APP_WS_API = 'ws://47.97.157.227:8011' From face884aeef154d6ad54def976e0c4192977ad0a Mon Sep 17 00:00:00 2001 From: yanps Date: Wed, 17 Apr 2024 10:54:39 +0800 Subject: [PATCH 08/10] =?UTF-8?q?opt:=20=E5=8F=A0=E7=9B=98=E8=A1=8C?= =?UTF-8?q?=E6=9E=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrappedManipulatorManipulatorDeviceDriver.java | 10 ++++++++-- .../src/main/java/org/nl/acs/utils/ReadUtil.java | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java index 539c53092..96fdb303d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/trapped_manipulator/TrappedManipulatorManipulatorDeviceDriver.java @@ -483,10 +483,16 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice list.add(map10); } if (ObjectUtil.isNotEmpty(interactionJsonDTO.getIsBinding())) { - map10.put("code", "to_material"); - map10.put("value", interactionJsonDTO.getBarcode()); + map11.put("code", "to_material"); + map11.put("value", interactionJsonDTO.getBarcode()); list.add(map11); } + Map map12 = new HashMap<>(); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getBindingTimes())) { + map12.put("code", "to_binding_times"); + map12.put("value", interactionJsonDTO.getBindingTimes()); + list.add(map12); + } } this.writing(list); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/ReadUtil.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/ReadUtil.java index 604d61376..e6b3e4714 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/ReadUtil.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/utils/ReadUtil.java @@ -1,5 +1,6 @@ package org.nl.acs.utils; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -46,7 +47,7 @@ public class ReadUtil { // 连接信息 ConnectionInformation ci = new ConnectionInformation(); ci.setHost(opc.getOpc_host()); - ci.setDomain(opc.getDomain()); + ci.setDomain(StrUtil.isEmpty(opc.getDomain()) ? " " : opc.getDomain()); ci.setUser(opc.getUser()); ci.setPassword(opc.getPassword()); ci.setClsid(opc.getCls_id()); From 7ddef1a680195b7bb3d49ade184065f781532bf6 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 17 Apr 2024 14:39:16 +0800 Subject: [PATCH 09/10] =?UTF-8?q?rev:=E5=87=BA=E5=BA=93=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=8A=A5=E9=94=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RawAssistIStorServiceImpl.java | 396 +++++++++++++++++- .../st/inbill/wql/ST_UPDATESTRUCTSECT_01.wql | 4 + 2 files changed, 395 insertions(+), 5 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index c71d93e28..6fbbbc8ee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -39,6 +39,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -67,8 +68,6 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { private final RedissonClient redissonClient; - private JSONObject struct_jo = null; - @Override public Map pageQuery(Map whereJson, Pageable page) { HashMap map = new HashMap<>(); @@ -1381,6 +1380,8 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { String col_num = whereJson.getString("layer_num"); // 转库时用 + JSONObject struct_jo = new JSONObject(); + JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + box_no + "' AND status < 3").uniqueResult(0); if (ObjectUtil.isEmpty(sub_jo)) { throw new BadRequestException("子卷包装关系不存在或已出库,请检查!"); @@ -1743,8 +1744,389 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { if (ObjectUtil.isEmpty(struct_jo)) { // 主存区类型更改成中转区类型:找一排主存区的更改中转区、把一排中转区的更改成主存区(只允许调用一次) - updateStructSect(col_num); - autoDisMove(whereJson); + SpringContextHolder.getBean(RawAssistIStorServiceImpl.class).updateStructSect(col_num); + struct_jo = autoDisMove2(whereJson); + } + return struct_jo; + } + + public JSONObject autoDisMove2(JSONObject whereJson) { + /* + * 分配逻辑: + * 1、先查找该木箱内属于什么物料、订单,定位到具体的块、排,查看是否存在空位 + * a、存在的话,优先放在这一块这一排中(遍历) + * b、不存在则根据该订单物料大概数量、选择数量相近的一个空巷道 + * 1)存在空巷道 + * 2)不存在,则找一个双通有空位置、数量相近的巷道 + * */ + + + String box_no = whereJson.getString("box_no"); + + String sect_id = whereJson.getString("sect_id"); + + String col_num = whereJson.getString("layer_num"); // 转库时用 + + JSONObject struct_jo = new JSONObject(); + + JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + box_no + "' AND status < 3").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("子卷包装关系不存在或已出库,请检查!"); + } + + String material_code = sub_jo.getString("product_name"); + + String sale_order_name = sub_jo.getString("sale_order_name"); + + double box_high = sub_jo.getDoubleValue("box_high"); + + HashMap row_map = new HashMap<>(); + row_map.put("material_code", material_code); + row_map.put("sale_order_name", sale_order_name); + row_map.put("col_num", col_num); + row_map.put("sect_id", sect_id); + row_map.put("flag", "11"); + + //查询到当前可用的巷道 + JSONArray rowArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + + for (int i = 0; i < rowArr.size(); i++) { + JSONObject row_jo = rowArr.getJSONObject(i); + + String block_num = row_jo.getString("block_num"); + String row_num = row_jo.getString("row_num"); + String placement_type = row_jo.getString("placement_type"); + + // 判断此排是否有除:入库锁、移入锁以外的锁 + JSONArray isLock = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type not in ('1','2','7') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0); + if (ObjectUtil.isEmpty(isLock)) { + if ("02".equals(placement_type)) { + // 左通 + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0); + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else if ("03".equals(placement_type)) { + // 右通 + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0); + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + // 双通 + + // 先倒序找到第一个木箱、判断上一个是否有货位 + JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0); + + JSONObject jsonDescStruct = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonDescBox)) { + String out_order_seq = jsonDescBox.getString("out_order_seq"); + jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } else { + // 先倒序找到第一个入库锁或者移库锁、判断上一个是否有货位 + JSONObject jsonDescEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonDescEmpStruct)) { + String out_order_seq = jsonDescEmpStruct.getString("out_order_seq"); + jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } + } + + if (ObjectUtil.isNotEmpty(jsonDescStruct)) { + struct_jo = jsonDescStruct; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + // 没有就正序找到第一个物料、判断上一个是否有货位 + JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0); + + JSONObject jsonAscStruct = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonAscBox)) { + String out_order_seq2 = jsonAscBox.getString("out_order_seq"); + // 上一个货位顺序号 + jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } else { + JSONObject jsonAscEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonAscEmpStruct)) { + String out_order_seq2 = jsonAscEmpStruct.getString("out_order_seq"); + jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } + + } + if (ObjectUtil.isNotEmpty(jsonAscStruct)) { + struct_jo = jsonAscStruct; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + // 说明这排有任务在执行,新开一排 + //根据分切计划查询该订单物料大概还有多少未入 + row_map.put("flag", "12"); + JSONArray plan_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(plan_rows)) { + plan_rows = new JSONArray(); + } + //查询该销售订单及行号有多少个生成状态的箱子 + row_map.put("flag", "27"); + JSONArray box_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(box_rows)) { + box_rows = new JSONArray(); + } + int box_num = (int) Math.ceil(plan_rows.size() / 2) + box_rows.size(); + + //查询数量与订单物料箱子数量相近的一排 + JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("col_num", col_num).addParam("sect_id", sect_id).addParam("flag", "13").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num").process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(empty_row)) { + String block_num2 = empty_row.getString("block_num"); + String row_num2 = empty_row.getString("row_num"); + String placement_type2 = empty_row.getString("placement_type"); + + if ("02".equals(placement_type)) { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "' AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq ASC").uniqueResult(0); + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "'AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq DESC").uniqueResult(0); + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } + } else { + //如果查询不到空的一排,则查询有空位双通的一排 + JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("col_num", col_num).addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0); + + for (int j = 0; j < haveArr.size(); j++) { + JSONObject have_row = haveArr.getJSONObject(j); + + String block_num3 = have_row.getString("block_num"); + String row_num3 = have_row.getString("row_num"); + + JSONArray isLock2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type not in ('1','2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0); + + if (ObjectUtil.isEmpty(isLock2)) { + // 先倒序找到第一个木箱、判断上一个是否有货位 + JSONObject jsonDescBox2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0); + + JSONObject jsonDescStruct2 = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonDescBox2)) { + String out_order_seq = jsonDescBox2.getString("out_order_seq"); + jsonDescStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } else { + // 先倒序找到第一个入库锁或者移库锁、判断上一个是否有货位 + JSONObject jsonDescEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonDescEmpStruct)) { + String out_order_seq = jsonDescEmpStruct.getString("out_order_seq"); + jsonDescStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } + } + + if (ObjectUtil.isNotEmpty(jsonDescStruct2)) { + struct_jo = jsonDescStruct2; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + // 没有就正序找到第一个物料、判断上一个是否有货位 + JSONObject jsonAscBox2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0); + + JSONObject jsonAscStruct2 = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonAscBox2)) { + String out_order_seq2 = jsonAscBox2.getString("out_order_seq"); + // 上一个货位顺序号 + jsonAscStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } else { + JSONObject jsonAscEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonAscEmpStruct)) { + String out_order_seq2 = jsonAscEmpStruct.getString("out_order_seq"); + jsonAscStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } + + } + if (ObjectUtil.isNotEmpty(jsonAscStruct2)) { + struct_jo = jsonAscStruct2; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } + } + } else { + continue; + } + } + } + } + } + } + } else { + continue; + } + } + + if (ObjectUtil.isEmpty(rowArr) || ObjectUtil.isEmpty(struct_jo)) { + //如果不存在相同订单物料的巷道 或者未找到相同物料订单号巷道中的货位 则 + + //根据分切计划查询该订单物料大概还有多少未入 + row_map.put("flag", "12"); + JSONArray plan_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(plan_rows)) { + plan_rows = new JSONArray(); + } + //查询该销售订单及行号有多少个生成状态的箱子 + row_map.put("flag", "27"); + JSONArray box_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(box_rows)) { + box_rows = new JSONArray(); + } + int box_num = (int) Math.ceil(plan_rows.size() / 2) + box_rows.size(); + + //查询数量与订单物料箱子数量相近的一排 + JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR") + .addParam("col_num", col_num) + .addParam("sect_id", sect_id) + .addParam("box_height", String.valueOf(box_high)) + .addParam("flag", "13") + .addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num") + .process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(empty_row)) { + String block_num = empty_row.getString("block_num"); + String row_num = empty_row.getString("row_num"); + String placement_type = empty_row.getString("placement_type"); + + if ("02".equals(placement_type)) { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "' AND row_num = '" + row_num + "' AND placement_type = '" + placement_type + "' AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq ASC").uniqueResult(0); + } else { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "' AND row_num = '" + row_num + "' AND placement_type = '" + placement_type + "'AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq DESC").uniqueResult(0); + } + } else { + + //如果查询不到空的一排,则查询有空位双通的一排 + JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("col_num", col_num).addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0); + for (int j = 0; j < haveArr.size(); j++) { + JSONObject have_row = haveArr.getJSONObject(j); + + String block_num3 = have_row.getString("block_num"); + String row_num3 = have_row.getString("row_num"); + + JSONArray isLock2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type not in ('1','2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0); + + if (ObjectUtil.isEmpty(isLock2)) { + // 先倒序找到第一个木箱、判断上一个是否有货位 + JSONObject jsonDescBox2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0); + + JSONObject jsonDescStruct2 = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonDescBox2)) { + String out_order_seq = jsonDescBox2.getString("out_order_seq"); + jsonDescStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } else { + // 先倒序找到第一个入库锁或者移库锁、判断上一个是否有货位 + JSONObject jsonDescEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonDescEmpStruct)) { + String out_order_seq = jsonDescEmpStruct.getString("out_order_seq"); + jsonDescStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0); + } + } + + if (ObjectUtil.isNotEmpty(jsonDescStruct2)) { + struct_jo = jsonDescStruct2; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } else { + // 没有就正序找到第一个物料、判断上一个是否有货位 + JSONObject jsonAscBox2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0); + + JSONObject jsonAscStruct2 = new JSONObject(); + if (ObjectUtil.isNotEmpty(jsonAscBox2)) { + String out_order_seq2 = jsonAscBox2.getString("out_order_seq"); + // 上一个货位顺序号 + jsonAscStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } else { + JSONObject jsonAscEmpStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('2','7') AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonAscEmpStruct)) { + String out_order_seq2 = jsonAscEmpStruct.getString("out_order_seq"); + jsonAscStruct2 = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0); + } + + } + if (ObjectUtil.isNotEmpty(jsonAscStruct2)) { + struct_jo = jsonAscStruct2; + + // 判断是否是第三层 且高度是否超过仓位高度 + if (StrUtil.equals(struct_jo.getString("layer_num"), "3")) { + if (box_high > struct_jo.getDoubleValue("height")) { + struct_jo = null; + continue; + } + } + break; + } + } + } else { + continue; + } + } + } } return struct_jo; } @@ -2132,7 +2514,11 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { dtl_wql.update(map, "iostorinv_id = '" + mst_row.get("iostorinv_id") + "'"); } - private void updateStructSect(String layer_num) { + /** + * 新开事务,把当前事务挂起,(新开事务不回滚) + */ + @Transactional(propagation=Propagation.REQUIRES_NEW) + public void updateStructSect(String layer_num) { WQLObject attr = WQLObject.getWQLObject("st_ivt_structattr"); WQLObject point = WQLObject.getWQLObject("sch_base_point"); /* diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_UPDATESTRUCTSECT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_UPDATESTRUCTSECT_01.wql index d550707a5..bcda2303a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_UPDATESTRUCTSECT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_UPDATESTRUCTSECT_01.wql @@ -54,6 +54,7 @@ sa.is_delete = '0' AND sa.is_used = '1' AND sa.sect_code = 'ZC01' + AND sa.placement_type = '01' OPTION 输入.layer_num <> "" sa.layer_num = 输入.layer_num ENDOPTION @@ -79,6 +80,7 @@ AND sa2.is_delete = '0' AND sa2.sect_code = 'ZC01' AND IFNULL( sa2.storagevehicle_code, '' ) = '' + AND sa2.placement_type = '01' OPTION 输入.layer_num <> "" sa2.layer_num = 输入.layer_num ENDOPTION @@ -113,6 +115,7 @@ AND sa.is_used = '1' AND sa.lock_type = '1' AND sa.sect_code = 'ZC01' + AND sa.placement_type = '01' OPTION 输入.layer_num <> "" sa.layer_num = 输入.layer_num ENDOPTION @@ -137,6 +140,7 @@ AND sa2.is_used = '1' AND sa2.is_delete = '0' AND sa2.sect_code = 'ZC01' + AND sa2.placement_type = '01' AND IFNULL( sa2.storagevehicle_code, '' ) = '' OPTION 输入.layer_num <> "" sa2.layer_num = 输入.layer_num From ff27c33786b129380fb6fe77428958988ceed0fe Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 17 Apr 2024 15:28:32 +0800 Subject: [PATCH 10/10] =?UTF-8?q?rev=20=E6=9B=B4=E6=96=B0=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../conveyor/siemens_conveyor_ckk/ItemProtocol.java | 2 +- .../return_good_manipulator/InteractionJsonDTO.java | 2 +- .../ReturnGoodManipulatorDeviceDriver.java | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor_ckk/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor_ckk/ItemProtocol.java index a51764935..885a0eb21 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor_ckk/ItemProtocol.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/siemens_conveyor_ckk/ItemProtocol.java @@ -64,7 +64,7 @@ public class ItemProtocol { /** *木箱宽度 */ - public static String item_to_weight = "to_weight"; + public static String item_to_weight = "to_width"; /** *木箱高度 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java index d5a90e47a..4cac17f62 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/InteractionJsonDTO.java @@ -12,7 +12,7 @@ public class InteractionJsonDTO { /** *木箱宽度 */ - private String weight; + private String width; /** *木箱高度 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java index db07f2b1c..6bededfe4 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_manipulator/return_good_manipulator/ReturnGoodManipulatorDeviceDriver.java @@ -454,9 +454,9 @@ public class ReturnGoodManipulatorDeviceDriver extends AbstractOpcDeviceDriver i map4.put("value", task); list.add(map4); if (ObjectUtil.isNotEmpty(interactionJsonDTO)) { - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getWeight())) { - map5.put("code", "to_weight"); - map5.put("value", interactionJsonDTO.getWeight()); + if (ObjectUtil.isNotEmpty(interactionJsonDTO.getWidth())) { + map5.put("code", "to_width"); + map5.put("value", interactionJsonDTO.getWidth()); list.add(map5); } if (ObjectUtil.isNotEmpty(interactionJsonDTO.getLength())) {