add: agv上下料开发

This commit is contained in:
2024-08-12 16:02:39 +08:00
parent 50a3d20a14
commit 4ac7e7fa60
10 changed files with 525 additions and 136 deletions

View File

@@ -1,3 +0,0 @@
{
"lockfileVersion": 1
}

View File

@@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.common.StandardOrdinarySiteDevice;
import org.nl.acs.device_driver.RequestMethodEnum;
import org.nl.acs.device_driver.basedriver.agv.agv_conveyor.AgvConveyorConveyorDeviceDriver;
import org.nl.acs.device_driver.basedriver.agv_conveyor.AgvConveyorDeviceDriver;
import org.nl.acs.device_driver.nl4.station.NL4StationDeviceDriver;
import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.opc.Device;
@@ -123,8 +123,8 @@ public class AgvWaitUtil {
String executeCode = task.getExecute_code();
if (StrUtil.isNotEmpty(executeCode)) {
Device executeDevice = this.deviceAppService.findDeviceByCode(executeCode);
if (executeDevice.getDeviceDriver() instanceof AgvConveyorConveyorDeviceDriver) {
AgvConveyorConveyorDeviceDriver driver = (AgvConveyorConveyorDeviceDriver) executeDevice.getDeviceDriver();
if (executeDevice.getDeviceDriver() instanceof AgvConveyorDeviceDriver) {
AgvConveyorDeviceDriver driver = (AgvConveyorDeviceDriver) executeDevice.getDeviceDriver();
if ("down".equals(task.getExecute_message())) {
driver.writing("to_down_finished", 1);
}
@@ -312,8 +312,8 @@ public class AgvWaitUtil {
String executeCode = task.getExecute_code();
if (StrUtil.isNotEmpty(executeCode)) {
Device executeDevice = this.deviceAppService.findDeviceByCode(executeCode);
if (executeDevice.getDeviceDriver() instanceof AgvConveyorConveyorDeviceDriver) {
AgvConveyorConveyorDeviceDriver driver = (AgvConveyorConveyorDeviceDriver) executeDevice.getDeviceDriver();
if (executeDevice.getDeviceDriver() instanceof AgvConveyorDeviceDriver) {
AgvConveyorDeviceDriver driver = (AgvConveyorDeviceDriver) executeDevice.getDeviceDriver();
if ("up".equals(task.getExecute_message())) {
driver.writing("to_up_finished", 1);
}

View File

@@ -11,7 +11,9 @@ import com.alibaba.fastjson.JSONObject;
public enum DriverTypeEnum {
ORDINARY_SITE(1, "standard_ordinary_site", "普通站点", "station"),
NL4_STATION(2, "nl4_station", "诺力四期-对接位", "station");
NL4_STATION(2, "nl4_station", "诺力四期-对接位", "station"),
AGV_CONVEYOR(3, "agv_conveyor", "上下料任务管理驱动", "conveyor"),
STANDAR_ORDINARY_SITE(4, "standard_ordinary_site", "上下料agv对接位", "conveyor");
//驱动索引
private int index;
//驱动编码

View File

@@ -1,4 +1,4 @@
package org.nl.acs.device_driver.basedriver.agv.agv_conveyor;
package org.nl.acs.device_driver.basedriver.agv_conveyor;
import org.nl.acs.device.device_driver.standard_inspect.ItemDTO;
import org.nl.acs.device_driver.DeviceDriver;
@@ -32,12 +32,12 @@ public class AgvConveyorDefinition implements OpcDeviceDriverDefinition {
@Override
public DeviceDriver getDriverInstance(Device device) {
return (new AgvConveyorConveyorDeviceDriver()).setDevice(device).setDriverDefinition(this);
return (new AgvConveyorDeviceDriver()).setDevice(device).setDriverDefinition(this);
}
@Override
public Class<? extends DeviceDriver> getDeviceDriverType() {
return AgvConveyorConveyorDeviceDriver.class;
return AgvConveyorDeviceDriver.class;
}
@Override

View File

@@ -1,19 +1,14 @@
package org.nl.acs.device_driver.basedriver.agv.agv_conveyor;
package org.nl.acs.device_driver.basedriver.agv_conveyor;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.acs.agv.server.AgvService;
import org.nl.acs.device.device_driver.standard_inspect.ReadUtil;
import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.RouteableDeviceDriver;
@@ -22,7 +17,6 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.instruction.service.dto.Instruction;
import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.monitor.DeviceStageMonitor;
import org.nl.acs.opc.Device;
@@ -32,8 +26,8 @@ import org.nl.acs.route.service.dto.RouteLineDto;
import org.nl.acs.task.service.TaskService;
import org.nl.acs.task.service.dto.TaskDto;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.openscada.opc.lib.da.Server;
import java.util.*;
@@ -44,7 +38,7 @@ import java.util.*;
@Getter
@Setter
@RequiredArgsConstructor
public class AgvConveyorConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor {
public class AgvConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor {
protected ItemProtocol itemProtocol = new ItemProtocol(this);
@@ -140,11 +134,18 @@ public class AgvConveyorConveyorDeviceDriver extends AbstractOpcDeviceDriver imp
return false;
} else {
this.instruction_require_time = date;
WQLObject wo = WQLObject.getWQLObject("acs_device_runpoint");
JSONObject json = wo.query("device_code ='" + on_off_site + "'").uniqueResult(0);
if (MapUtil.isNotEmpty(json) && "0".equals(json.get("hasgoods"))){
logServer.deviceExecuteLog(this.device_code, "", "", on_off_site + "无上下料货物");
return false;
}
//请求下料
if (down_request == 1){
List<RouteLineDto> routeLineDtos = routeLineService.getPathLinesByCode(on_off_site,"normal");
List<RouteLineDto> routeLineDtos = routeLineService.getsByCode(on_off_site,"normal");
if (CollUtil.isEmpty(routeLineDtos) || routeLineDtos.size() < 1) {
logServer.deviceExecuteLog(this.device_code, "", "", "没有"+ on_off_site + "的路由");
return false;
}
RouteLineDto routeLineDto = routeLineDtos.get(0);
TaskDto taskDto = new TaskDto();
@@ -158,7 +159,7 @@ public class AgvConveyorConveyorDeviceDriver extends AbstractOpcDeviceDriver imp
}
//请求上料
if (up_request == 1){
List<RouteLineDto> routeLineDtos = routeLineService.getsByCode(on_off_site,"normal");
List<RouteLineDto> routeLineDtos = routeLineService.getPathLinesByCode(on_off_site,"normal");
if (CollUtil.isEmpty(routeLineDtos) || routeLineDtos.size() < 1) {
logServer.deviceExecuteLog(this.device_code, "", "", "没有"+ on_off_site + "的路由");
}

View File

@@ -1,4 +1,4 @@
package org.nl.acs.device_driver.basedriver.agv.agv_conveyor;
package org.nl.acs.device_driver.basedriver.agv_conveyor;
import lombok.Getter;
import lombok.Setter;
@@ -23,9 +23,9 @@ public class ItemProtocol {
private AgvConveyorConveyorDeviceDriver driver;
private AgvConveyorDeviceDriver driver;
public ItemProtocol(AgvConveyorConveyorDeviceDriver driver) {
public ItemProtocol(AgvConveyorDeviceDriver driver) {
this.driver = driver;
}

View File

@@ -2,7 +2,9 @@
package org.nl.hand.amb.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -28,6 +30,7 @@ import org.nl.acs.opc.Device;
import org.nl.acs.opc.DeviceAppService;
import org.nl.acs.opc.DeviceAppServiceImpl;
import org.nl.acs.route.service.RouteLineService;
import org.nl.acs.route.service.dto.RouteLineDto;
import org.nl.acs.task.service.TaskService;
import org.nl.acs.task.service.dto.TaskDto;
import org.nl.acs.task.service.impl.TaskServiceImpl;
@@ -44,10 +47,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
/**
@@ -63,6 +63,10 @@ public class HFHandServiceImpl implements HFHandService {
private final DeviceService deviceService;
private final DeviceAppService deviceAppService;
private final DictService dictService;
private final TaskService taskserver;
private final RouteLineService routeLineService;
InstructionService instructionService = null;
@@ -83,7 +87,7 @@ public class HFHandServiceImpl implements HFHandService {
throw new BadRequestException("区域不能为空!");
}
JSONArray devices = WQLObject.getWQLObject("acs_device").query("region = '" + region + "' AND device_type = 'station' AND is_config = 'true' ", "seq_num").getResultJSONArray(0);
JSONArray devices = WQLObject.getWQLObject("acs_device").query("region = '" + region + "' AND (device_type = 'station' || device_type = 'conveyor') AND is_config = 'true' ", "seq_num").getResultJSONArray(0);
JSONArray resultArr = new JSONArray();
for (int i = 0; i < devices.size(); i++) {
JSONObject device = devices.getJSONObject(i);