add:添加驱动

This commit is contained in:
2024-01-09 13:19:16 +08:00
parent 7ef90eb8e6
commit ce6f38597c
10 changed files with 731 additions and 221 deletions

View File

@@ -11,75 +11,45 @@ import java.util.List;
@Data @Data
public class ItemProtocol { public class ItemProtocol {
/** //心跳
* 1/0 手动/自动 public static String item_heartbeat = "heartbeat";
*/ //工作模式
public static String item_mode = "mode"; public static String item_mode = "mode";
/** //光电信号
* 0/1 半自动/全自动
*/
public static String item_action = "action";
/**
* 0/1 远程/本地控制
*/
public static String item_control = "control";
/**
* 2 运行中
* 1 急停/故障
* 0 待机中
*/
public static String item_status = "status";
/**
* 1 机头上有轴
*/
public static String item_move = "move"; public static String item_move = "move";
/** //动作信号
* 1/0 穿轴中/穿轴完成 public static String item_action = "action";
*/ //任务号
public static String item_plug_finish = "plug_finish"; public static String item_task = "task";
/** //报警
* 1/0 把轴中/拔轴完成 public static String item_error = "error";
*/ //气涨轴条码
public static String item_pull_finish = "pull_finish"; public static String item_barcode = "barcode";
/** //纸管1重量
* 3寸轴穿轴次数 public static String item_weight1 = "weight1";
*/ //纸管1规格
public static String item_3plug_times = "3plug_times"; public static String item_material1 = "material1";
/** //纸管2重量
* 6寸轴穿轴次数 public static String item_weight2 = "weight2";
*/ //纸管2规格
public static String item_6plug_times = "6plug_times"; public static String item_material2 = "material2";
/**
* 3寸轴拔轴次数
*/
public static String item_3pull_times = "3pull_times";
/**
* 6寸轴拔轴次数
*/
public static String item_6pull_times = "6pull_times";
/**
* 穿轴总次数
*/
public static String item_plug_alltimes = "plug_alltimes";
/**
* 拔轴总次数
*/
public static String item_pull_alltimes = "pull_alltimes";
//下发命令
/**
* 1 全自动启动
*/
public static String item_to_command = "to_command"; public static String item_to_command = "to_command";
/** //纸管1规格
* 0/1 穿轴/拔轴 public static String item_to_material1 = "to_material1";
*/ //纸管2规格
public static String item_to_type = "to_type"; public static String item_to_material2 = "to_material2";
/** //纸管数量
* 3/6 轴尺寸 public static String item_to_qty = "to_qty";
*/ //气涨轴类型
public static String item_to_qzz_type = "to_qzz_type";
//是否换轴
public static String item_to_is_changeShaft = "to_is_changeShaft";
//尺寸
public static String item_to_size = "to_size"; public static String item_to_size = "to_size";
//存储位置
public static String item_to_location = "to_location";
private PlugPullDeviceSiteDeviceDriver driver; private PlugPullDeviceSiteDeviceDriver driver;
@@ -87,85 +57,71 @@ public class ItemProtocol {
this.driver = driver; this.driver = driver;
} }
public int getItem_mode() { public int getHeartbeat() {
return this.getOpcIntegerValue(item_heartbeat);
}
public int getMode() {
return this.getOpcIntegerValue(item_mode); return this.getOpcIntegerValue(item_mode);
} }
; public int getMove() {
public int getItem_move() {
return this.getOpcIntegerValue(item_move); return this.getOpcIntegerValue(item_move);
} }
; public int getAction() {
public int getItem_action() {
return this.getOpcIntegerValue(item_action); return this.getOpcIntegerValue(item_action);
} }
; public int getError() {
return this.getOpcIntegerValue(item_error);
public int getItem_control() {
return this.getOpcIntegerValue(item_control);
} }
; public int getTask() {
return this.getOpcIntegerValue(item_task);
public int getItem_status() {
return this.getOpcIntegerValue(item_status);
} }
; public int getBarcode(){ return this.getOpcIntegerValue(item_barcode);}
public int getItem_plug_finish() { public int getWeight1(){ return this.getOpcIntegerValue(item_weight1);}
return this.getOpcIntegerValue(item_plug_finish);
public int getMaterial1(){ return this.getOpcIntegerValue(item_material1);}
public int getWeight2(){ return this.getOpcIntegerValue(item_weight2);}
public int getMaterial2(){ return this.getOpcIntegerValue(item_material2);}
public int getTo_command() {
return this.getOpcIntegerValue(item_to_command);
} }
; public int getTo_material1() {
return this.getOpcIntegerValue(item_to_material1);
public int getItem_pull_finish() {
return this.getOpcIntegerValue(item_pull_finish);
} }
; public int getTo_material2() {
return this.getOpcIntegerValue(item_to_material2);
public int getItem_3plug_times() {
return this.getOpcIntegerValue(item_3plug_times);
} }
; public int getTo_qty() {
return this.getOpcIntegerValue(item_to_qty);
public int getItem_6plug_times() {
return this.getOpcIntegerValue(item_6plug_times);
} }
; public int getTo_qzz_type() {
return this.getOpcIntegerValue(item_to_qzz_type);
public int getItem_3pull_times() {
return this.getOpcIntegerValue(item_3pull_times);
} }
; public int getTo_is_changeShaft() {
return this.getOpcIntegerValue(item_to_is_changeShaft);
public int getItem_6pull_times() {
return this.getOpcIntegerValue(item_6pull_times);
} }
; public int getTo_size() {
return this.getOpcIntegerValue(item_to_size);
public int getItem_plug_alltimes() {
return this.getOpcIntegerValue(item_plug_alltimes);
} }
; public int getTo_location() {
return this.getOpcIntegerValue(item_to_location);
public int getItem_pull_alltimes() {
return this.getOpcIntegerValue(item_pull_alltimes);
} }
;
Boolean isonline; Boolean isonline;
public int getOpcIntegerValue(String protocol) { public int getOpcIntegerValue(String protocol) {
@@ -195,27 +151,30 @@ public class ItemProtocol {
public static List<ItemDto> getReadableItemDtos() { public static List<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
list.add(new ItemDto(item_mode, "工作模式", "30243")); list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0"));
list.add(new ItemDto(item_action, "半自动/全自动", "30245")); list.add(new ItemDto(item_mode, "工作模式", "DB1.B1"));
list.add(new ItemDto(item_control, "远程控制", "30254")); list.add(new ItemDto(item_move, "光电信号", "DB1.B2"));
list.add(new ItemDto(item_status, "状态", "30181")); list.add(new ItemDto(item_action, "动作信号", "DB1.B3"));
list.add(new ItemDto(item_move, "机头上有轴", "30252")); list.add(new ItemDto(item_barcode, "气胀轴条码", "DB1.B4"));
list.add(new ItemDto(item_plug_finish, "穿轴完成", "30249")); list.add(new ItemDto(item_weight1, "纸管1重量", "DB1.B4"));
list.add(new ItemDto(item_pull_finish, "拔轴完成", "30250")); list.add(new ItemDto(item_material1, "纸管1规格", "DB1.B4"));
list.add(new ItemDto(item_3plug_times, "3寸轴穿轴次数", "30231")); list.add(new ItemDto(item_weight2, "纸管2重量", "DB1.B4"));
list.add(new ItemDto(item_6plug_times, "6寸轴穿轴次数", "30235")); list.add(new ItemDto(item_material2, "纸管2规格", "DB1.B4"));
list.add(new ItemDto(item_3pull_times, "3寸轴拔轴次数", "30233")); list.add(new ItemDto(item_error, "报警信号", "DB1.B5"));
list.add(new ItemDto(item_6pull_times, "6寸轴拔轴次数", "30237")); list.add(new ItemDto(item_task, "任务号", "DB1.D6"));
list.add(new ItemDto(item_plug_alltimes, "穿轴总次数", "30239"));
list.add(new ItemDto(item_pull_alltimes, "拔轴总次数", "30241"));
return list; return list;
} }
public static List<ItemDto> getWriteableItemDtos() { public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
list.add(new ItemDto(item_to_command, "下发命令", "40246")); list.add(new ItemDto(item_to_command, "下发命令", "DB2.W0"));
list.add(new ItemDto(item_to_type, "类型", "40244")); list.add(new ItemDto(item_to_material1, "纸管1规格", "DB2.W2"));
list.add(new ItemDto(item_to_size, "尺寸", "40247")); list.add(new ItemDto(item_to_material2, "纸管2规格", "DB2.W4"));
list.add(new ItemDto(item_to_qty, "纸管数量", "DB2.W6"));
list.add(new ItemDto(item_to_qzz_type, "气胀轴类型", "DB2.W8"));
list.add(new ItemDto(item_to_is_changeShaft, "是否换轴", "DB2.W"));
list.add(new ItemDto(item_to_location, "存储位置", "DB2.W10"));
list.add(new ItemDto(item_to_size, "尺寸", "DB2.W12"));
return list; return list;
} }

View File

@@ -1,5 +1,6 @@
package org.nl.acs.device_driver.conveyor.plug_pull_device_site; package org.nl.acs.device_driver.conveyor.plug_pull_device_site;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;
@@ -14,6 +15,7 @@ import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
import org.nl.acs.instruction.domain.Instruction;
import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.monitor.DeviceStageMonitor;
@@ -58,32 +60,71 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl
private Date instruction_apply_time = new Date(); private Date instruction_apply_time = new Date();
private int instruction_require_time_out = 3000; private int instruction_require_time_out = 3000;
public int mode = 0; //工作模式
public int move = 0; int mode = 0;
public int action = 0; int last_mode = 0;
public int status = 0; //光电信号
public int control = 0; int move = 0;
public int plug_finish = 0; int last_move = 0;
public int pull_finish = 0; //动作信号
public int plug3_times = 0; int action = 0;
public int plug6_times = 0; int last_action = 0;
public int pull3_times = 0;
public int pull6_times = 0;
public int plug_alltimes = 0;
public int pull_alltimes = 0;
public int last_mode = 0; //报警信号
public int last_move = 0; int error = 0;
public int last_action = 0; int last_error = 0;
public int last_status = 0; //任务号
public int last_control = 0; int task = 0;
public int last_plug_finish = 0; int last_task = 0;
public int last_pull_finish = 0;
int heartbeat = 0;
int last_heartbeat = 0;
int to_command = 0;
int last_to_command = 0;
//气胀轴条码
int barcode =0;
int last_barcode =0;
//纸管1重量
int weight1 =0;
int last_weight1 =0;
//纸管1规格
int material1 =0;
int last_material1 =0;
//纸管2重量
int weight2 =0;
int last_weight2 =0;
//纸管2规格
int material2 =0;
int last_material2 =0;
int to_size = 0;
int last_to_size = 0;
int to_material1 = 0;
int last_to_material1 = 0;
int to_material2 = 0;
int last_to_material2 = 0;
int to_qty = 0;
int last_to_qty = 0;
int to_qzz_type = 0;
int last_to_qzz_type = 0;
int to_is_changeShaft = 0;
int last_to_is_changeShaft = 0;
int to_location = 0;
int last_to_location = 0;
Boolean isonline = true; Boolean isonline = true;
Boolean iserror = false; Boolean iserror = false;
//当前指令
Instruction inst = null;
/** /**
* 1-执行任务2-取货完成3-放货完成; * 1-执行任务2-取货完成3-放货完成;
@@ -92,6 +133,8 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl
String device_code; String device_code;
String message = null;
@Override @Override
public Device getDevice() { public Device getDevice() {
return this.device; return this.device;
@@ -101,40 +144,213 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl
* 请求成功标记 * 请求成功标记
*/ */
Boolean requireSucess = false; Boolean requireSucess = false;
String feedMessage = "";
@Override @Override
public void execute() { public void execute() {
String message = null; String message = null;
device_code = this.getDeviceCode(); device_code = this.getDeviceCode();
mode = this.itemProtocol.getItem_mode(); mode = this.itemProtocol.getMode();
move = this.itemProtocol.getItem_move(); move = this.itemProtocol.getMove();
action = this.itemProtocol.getItem_action(); action = this.itemProtocol.getAction();
status = this.itemProtocol.getItem_status(); error = this.itemProtocol.getError();
control = this.itemProtocol.getItem_control(); task = this.itemProtocol.getTask();
plug_finish = this.itemProtocol.getItem_plug_finish(); heartbeat = this.itemProtocol.getHeartbeat();
pull_finish = this.itemProtocol.getItem_pull_finish(); barcode = this.itemProtocol.getBarcode();
plug3_times = this.itemProtocol.getItem_3plug_times(); weight1 = this.itemProtocol.getWeight1();
plug6_times = this.itemProtocol.getItem_6plug_times(); material1 = this.itemProtocol.getMaterial1();
pull3_times = this.itemProtocol.getItem_3pull_times(); weight2 = this.itemProtocol.getWeight2();
pull6_times = this.itemProtocol.getItem_6pull_times(); material2 = this.itemProtocol.getMaterial2();
plug_alltimes = this.itemProtocol.getItem_plug_alltimes(); to_command = this.itemProtocol.getTo_command();
pull_alltimes = this.itemProtocol.getItem_pull_alltimes(); to_material1 = this.itemProtocol.getTo_material1();
to_material2 = this.itemProtocol.getTo_material2();
to_qty = this.itemProtocol.getTo_qty();
to_qzz_type=this.itemProtocol.getTo_qzz_type();
to_is_changeShaft=this.itemProtocol.getTo_is_changeShaft();
to_location=this.itemProtocol.getTo_location();
to_size = this.itemProtocol.getTo_size();
if (mode != last_mode) {
requireSucess = false;
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode);
}
if (move != last_move) {
logServer.deviceItemValue(this.device_code, "move", String.valueOf(move));
logServer.deviceExecuteLog(this.device_code, "", "", "信号move" + last_move + "->" + move);
}
if (action != last_action) {
logServer.deviceItemValue(this.device_code, "action", String.valueOf(action));
logServer.deviceExecuteLog(this.device_code, "", "", "信号action" + last_action + "->" + action);
}
if (error != last_error) {
logServer.deviceItemValue(this.device_code, "error", String.valueOf(error));
logServer.deviceExecuteLog(this.device_code, "", "", "信号error" + last_error + "->" + error);
}
if (barcode != last_barcode) {
logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(barcode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode" + last_barcode + "->" + barcode);
}
if (weight1 != last_weight1) {
logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(weight1));
logServer.deviceExecuteLog(this.device_code, "", "", "信号weight1" + last_weight1 + "->" + weight1);
}
if (material1 != last_material1) {
logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(material1));
logServer.deviceExecuteLog(this.device_code, "", "", "信号material1" + last_material1 + "->" + material1);
}
if (weight2 != last_weight2) {
logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(weight2));
logServer.deviceExecuteLog(this.device_code, "", "", "信号weight2" + last_weight2 + "->" + weight2);
}
if (material2 != last_material2) {
logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(material2));
logServer.deviceExecuteLog(this.device_code, "", "", "信号material2" + last_material2 + "->" + material2);
}
if (task != last_task) {
logServer.deviceItemValue(this.device_code, "task", String.valueOf(task));
logServer.deviceExecuteLog(this.device_code, "", "", "信号task" + last_task + "->" + task);
}
if (to_command != last_to_command) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command" + last_to_command + "->" + to_command);
}
if (to_material1 != last_to_material1) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_material1" + last_to_material1 + "->" + to_material1);
}
if (to_material2 != last_to_material2) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_material2" + last_to_material2 + "->" + to_material2);
}
if (to_qty != last_to_qty) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qty" + last_to_qty + "->" + to_qty);
}
if (to_qzz_type != last_to_qzz_type) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qzz_type" + last_to_qzz_type + "->" + to_qzz_type);
}
if (to_is_changeShaft != last_to_is_changeShaft) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_is_changeShaft" + last_to_is_changeShaft + "->" + to_is_changeShaft);
}
if (to_location != last_to_location) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_location" + last_to_location + "->" + to_location);
}
if (to_size != last_to_size) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_size" + last_to_size + "->" + to_size);
}
if (status != 1) { if (mode == 0) {
this.setIsonline(false); this.setIsonline(false);
message = "未联机";
//有报警
} else if (error != 0) {
this.setIserror(true); this.setIserror(true);
message = "有报警"; message = "有报警";
//无报警 //无报警
} else { } else {
this.setIsonline(true);
this.setIserror(false);
message = "";
Instruction instruction = null;
List toInstructions;
//插拔轴机工位申请任务
switch (mode) {
case 1:
log.debug("弃用(留作兼容)");
break;
case 2:
log.info("待机");
break;
case 3:
log.info("运行中");
break;
case 4:
if (move == 1 && !requireSucess && task > 0) {
//申请套管
apply_casing(mode);
}
break;
case 5:
if (!requireSucess && task > 0) {
//套管完成
bushingSucess(mode);
}
break;
case 6:
if (!requireSucess && task > 0) {
//拔轴完成
pullShaftSucess(mode);
}
break;
case 7:
if (!requireSucess && task > 0) {
//套管失败无库存
//todo
}
break;
case 8:
if (!requireSucess && task > 0) {
//缓存线已满,生成行架任务
// applyTask();
}
break;
default:
log.info("未知模式");
break;
}
} }
last_mode = mode; last_mode = mode;
last_move = move; last_move = move;
last_action = action; last_action = action;
last_error = error;
last_task = task;
last_heartbeat = heartbeat;
last_barcode =barcode;
last_weight1=weight1;
last_weight2=weight2;
last_material1=material1;
last_material2=material2;
last_to_command = to_command;
last_to_material1 =to_material1;
last_to_material2 = to_material2;
last_to_qty=to_qty;
last_to_qzz_type=to_qzz_type;
last_to_is_changeShaft = to_is_changeShaft;
last_to_location=to_location;
last_to_size = to_size;
}
/**
* 申请套管
*/
private synchronized void apply_casing(int mode) {
this.writeSignal(mode);
logServer.deviceExecuteLog(this.device_code, "", "", "申请套管,返回参数:" + "applyResponse");
message = "申请套管成功";
}
/**
* 套管完成
*/
private synchronized void bushingSucess(int mode) {
this.writeSignal(mode);
logServer.deviceExecuteLog(this.device_code, "", "", "反馈套管完成,返回参数:" + "applyResponse");
message = "套管完成成功";
}
/**
* 拔轴完成
*/
private synchronized void pullShaftSucess(int mode) {
this.writeSignal(mode);
logServer.deviceExecuteLog(this.device_code, "", "", "申请拔轴,返回参数:" + "applyResponse");
message = "拔轴完成成功";
}
public void writeSignal(int mode){
Map<String, Object> map = new LinkedHashMap<>();
map.put("to_command", mode);
this.writing(map);
requireSucess = true;
} }
@@ -160,6 +376,24 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl
this.control(itemMap); this.control(itemMap);
} }
public void writing(Map<String, Object> map) {
DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl");
Map<String, Object> itemMap = new LinkedHashMap<>();
map.forEach((key, value) -> {
if (ObjectUtil.isNotEmpty(value)) {
itemMap.put(getToParam() + key, value);
}
});
if (ObjectUtil.isNotEmpty(itemMap)) {
this.control(itemMap);
logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap);
}
}
public String getToParam() {
return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + ".";
}
/** /**
* 将扩展表中的字符串数据转换成集合 * 将扩展表中的字符串数据转换成集合
*/ */

View File

@@ -7,7 +7,9 @@ import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.acs.AcsConfig;
import org.nl.acs.agv.server.AgvService; import org.nl.acs.agv.server.AgvService;
import org.nl.acs.common.base.CommonFinalParam;
import org.nl.acs.device.domain.Device; import org.nl.acs.device.domain.Device;
import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.DeviceDriver;
@@ -23,6 +25,7 @@ import org.nl.acs.history.ErrorUtil;
import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.DeviceErrorLogService;
import org.nl.acs.history.service.dto.DeviceErrorLogDto; import org.nl.acs.history.service.dto.DeviceErrorLogDto;
import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; 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.InstructionService;
import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.monitor.DeviceStageMonitor;
@@ -31,6 +34,7 @@ import org.nl.acs.opc.DeviceAppService;
import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.RouteLineService;
import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.TaskService;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import java.util.*; import java.util.*;
@@ -44,6 +48,26 @@ import java.util.*;
public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed {
protected ItemProtocol itemProtocol = new ItemProtocol(this); protected ItemProtocol itemProtocol = new ItemProtocol(this);
@Autowired
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
@Autowired
DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class);
@Autowired
RouteLineService routelineserver = SpringContextHolder.getBean(RouteLineService.class);
@Autowired
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
@Autowired
DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class);
@Autowired
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);
@Autowired
ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class);
@Autowired
AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class);
DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class);
@@ -113,6 +137,78 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem
logServer.deviceExecuteLog(this.device_code, "", "", "信号error" + last_error + "->" + error); logServer.deviceExecuteLog(this.device_code, "", "", "信号error" + last_error + "->" + error);
} }
if (mode == 0) {
this.setIsonline(false);
message = "未联机";
// 有报警
// } else if (error != 0) {
// this.setIsonline(false);
// this.setIserror(true);
// message = "有报警";
// //无报警
} else {
this.setIsonline(true);
this.setIserror(false);
if (error != 0) {
this.setIserror(true);
message = "有报警";
}
message = "";
Instruction instruction = null;
List toInstructions;
switch (mode) {
case 2:
log.debug("设备运转模式:等待工作");
break;
case 3:
log.debug("设备运转模式:等待工作");
break;
case 4:
// 申请AGV取空取满放空放满任务
if (move > 0 && !requireSucess) {
// applyFourPointAgvTask();
}
break;
case 5:
/**
* 申请AGV取空放空的任务
*/
if (move > 0 && !requireSucess) {
applyTakeEmptyAgvTask();
}
break;
case 6:
// 申请取满放满任务
if (move > 0 && !requireSucess) {
// applyTakeFullAgvTask();
}
break;
case 7:
// 允许AGV进入
if (move == 0 && !requireSucess) {
// allowAgvEntry();
}
break;
case 8:
// 允许AGV离开
if (move == 0 && !requireSucess) {
// allowAgvLeave();
}
break;
case 9:
// 取消任务
if (move == 0 && !requireSucess) {
// cancelTask();
}
break;
default:
break;
}
}
last_mode = mode; last_mode = mode;
last_move = move; last_move = move;
last_action = action; last_action = action;
@@ -120,6 +216,39 @@ public class GreenFoilMachineButtonDriver extends AbstractOpcDeviceDriver implem
} }
/**
* 申请AGV取空放空的任务
*/
public synchronized void applyTakeEmptyAgvTask() {
Date date = new Date();
if (date.getTime() - this.instruction_require_time.getTime()
< (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return;
} else {
this.instruction_require_time = date;
if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) {
message = "申请AGV搬运任务中...";
JSONObject apply = new JSONObject();
apply.put("device_code", device_code);
apply.put("type", CommonFinalParam.ONE);
String str = acsToWmsService.applyTaskToWms(apply);
JSONObject jo = JSON.parseObject(str);
if (ObjectUtil.isEmpty(jo)) {
message = "申请AGV搬运任务接口不通";
} else {
if (jo.getInteger("status") == 200) {
message = "申请AGV搬运任务成功";
requireSucess = true;
} else {
requireSucess = false;
message = "申请AGV搬运任务失败," + jo.get("message").toString();
}
}
}
}
}

View File

@@ -38,6 +38,21 @@ public class ItemProtocol {
public static String item_to_target = "to_target"; public static String item_to_target = "to_target";
//下发任务号 //下发任务号
public static String item_to_task = "to_task"; public static String item_to_task = "to_task";
//是否拔轴
public static String item_to_pull = "to_pull";
//是否套轴
public static String item_to_sleeve = "to_sleeve";
//尺寸
public static String item_to_size = "to_size";
//代数
public static String item_to_version = "to_version";
//子卷数量
public static String item_to_qty = "to_qty";
//子卷1长度
public static String item_to_length1 = "to_length1";
//子卷2长度
public static String item_to_length2 = "to_length2";
private PullHeadManipulatorDeviceDriver driver; private PullHeadManipulatorDeviceDriver driver;
@@ -77,6 +92,26 @@ public class ItemProtocol {
return this.getOpcIntegerValue(item_to_task); return this.getOpcIntegerValue(item_to_task);
} }
public int getTo_pull() {
return this.getOpcIntegerValue(item_to_pull);
}
public int getTo_sleeve() {
return this.getOpcIntegerValue(item_to_sleeve);
}
public int getTo_size() {
return this.getOpcIntegerValue(item_to_size);
}
public int getTo_version() {
return this.getOpcIntegerValue(item_to_version);
}
public int getTo_qty() {
return this.getOpcIntegerValue(item_to_qty);
}
public int getTo_onset() { public int getTo_onset() {
return this.getOpcIntegerValue(item_to_onset); return this.getOpcIntegerValue(item_to_onset);
} }
@@ -97,6 +132,14 @@ public class ItemProtocol {
return this.getOpcFloatValue(item_y_position); return this.getOpcFloatValue(item_y_position);
} }
public float getTo_length1() {
return this.getOpcFloatValue(item_to_length1);
}
public float getTo_length2() {
return this.getOpcFloatValue(item_to_length2);
}
Boolean isonline; Boolean isonline;
public int getOpcIntegerValue(String protocol) { public int getOpcIntegerValue(String protocol) {
@@ -155,6 +198,13 @@ public class ItemProtocol {
list.add(new ItemDto(item_to_onset, "下发起始站", "DB2.W2")); list.add(new ItemDto(item_to_onset, "下发起始站", "DB2.W2"));
list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W4")); list.add(new ItemDto(item_to_target, "下发目标站", "DB2.W4"));
list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6")); list.add(new ItemDto(item_to_task, "下发任务号", "DB2.D6"));
list.add(new ItemDto(item_to_pull, "是否拔轴", "DB2.W8"));
list.add(new ItemDto(item_to_sleeve, "是否套轴", "DB2.W10"));
list.add(new ItemDto(item_to_size, "尺寸", "DB2.W12"));
list.add(new ItemDto(item_to_version, "代数", "DB2.W14"));
list.add(new ItemDto(item_to_qty, "子卷数量", "DB2.W16"));
list.add(new ItemDto(item_to_length1, "子卷1长度", "DB2.W18"));
list.add(new ItemDto(item_to_length2, "子卷2长度", "DB2.W20"));
return list; return list;
} }

View File

@@ -103,6 +103,29 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
int to_onset = 0; int to_onset = 0;
int last_to_onset = 0; int last_to_onset = 0;
int to_pull = 0;
int last_to_pull = 0;
int to_sleeve = 0;
int last_to_sleeve = 0;
int to_size = 0;
int last_to_size = 0;
int to_version = 0;
int last_to_version = 0;
int to_qty = 0;
int last_to_qty = 0;
// 子卷1长度
float to_length1 = 0;
float last_to_length1 = 0;
// y坐标
float to_length2 = 0;
float last_to_length2 = 0;
Boolean isonline = true; Boolean isonline = true;
int hasGoods = 0; int hasGoods = 0;
@@ -162,6 +185,13 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
to_command = this.itemProtocol.getTo_command(); to_command = this.itemProtocol.getTo_command();
to_target = this.itemProtocol.getTo_target(); to_target = this.itemProtocol.getTo_target();
to_task = this.itemProtocol.getTo_task(); to_task = this.itemProtocol.getTo_task();
to_pull = this.itemProtocol.getTo_pull();
to_sleeve = this.itemProtocol.getTo_sleeve();
to_size = this.itemProtocol.getTo_size();
to_qty = this.itemProtocol.getTo_qty();
to_version = this.itemProtocol.getTo_version();
to_length1 = this.itemProtocol.getTo_length1();
to_length2 = this.itemProtocol.getTo_length2();
to_onset = this.itemProtocol.getTo_onset(); to_onset = this.itemProtocol.getTo_onset();
x_position = this.itemProtocol.getX_position(); x_position = this.itemProtocol.getX_position();
y_position = this.itemProtocol.getY_position(); y_position = this.itemProtocol.getY_position();
@@ -178,6 +208,27 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
if (to_task != last_to_task) { if (to_task != last_to_task) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task" + last_to_task + "->" + to_task); logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task" + last_to_task + "->" + to_task);
} }
if (to_pull != last_to_pull) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_pull" + last_to_pull + "->" + to_pull);
}
if (to_sleeve != last_to_sleeve) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_sleeve" + last_to_sleeve + "->" + to_sleeve);
}
if (to_size != last_to_size) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_size" + last_to_size + "->" + to_size);
}
if (to_version != last_to_version) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_version" + last_to_version + "->" + to_version);
}
if (to_qty != last_to_qty) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_qty" + last_to_qty + "->" + to_qty);
}
if (to_length1 != last_to_length1) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_length1" + last_to_length1 + "->" + to_length1);
}
if (to_length2 != last_to_length2) {
logServer.deviceExecuteLog(this.device_code, "", "", "信号to_length2" + last_to_length2 + "->" + to_length2);
}
if (mode != last_mode) { if (mode != last_mode) {
requireSucess = false; requireSucess = false;
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
@@ -234,42 +285,16 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
} }
} }
//反馈重量
if (mode == 3 && action == 5 && move == 1 && task > 0) {
Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task));
if (ObjectUtil.isNotEmpty(inst2)) {
Map<String, Object> map = new LinkedHashMap<>();
//todo:反馈重量
map.put("to_command", "5");
this.writing(map);
} else {
logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许取货now_steps_type=3");
}
} else {
feedMessage = "行架机械手:";
if (mode != 3) {
feedMessage = feedMessage + "mode不为运行中状态,";
}
if (action != 5) {
feedMessage = feedMessage + "action不为反馈重量状态,";
}
if (move != 1) {
feedMessage = feedMessage + "move不为有货状态,";
}
if (task == 0) {
feedMessage = feedMessage + "task为0。";
}
}
//任务完成 //任务完成
if (mode == 3 && action == 6 && move == 0 && task > 0) { if (mode == 3 && action == 4 && move == 0 && task > 0) {
Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task));
if (inst2 != null) { if (inst2 != null) {
if (StrUtil.equals(inst2.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) { if (StrUtil.equals(inst2.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex())) {
try { try {
finish_instruction(inst2); finish_instruction(inst2);
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put("to_command", "6"); map.put("to_command", "5");
this.writing(map); this.writing(map);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@@ -278,6 +303,8 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
} }
} }
} catch (Exception var17) { } catch (Exception var17) {
var17.printStackTrace(); var17.printStackTrace();
feedMessage = var17.getMessage(); feedMessage = var17.getMessage();
@@ -346,6 +373,13 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
last_to_onset = to_onset; last_to_onset = to_onset;
last_x_position = x_position; last_x_position = x_position;
last_y_position = y_position; last_y_position = y_position;
last_to_pull = to_pull;
last_to_sleeve = to_sleeve;
last_to_size = to_size;
last_to_version = to_version;
last_to_qty = to_qty;
last_to_length1 = to_length1;
last_to_length2 = to_length2;
} }
/** /**

View File

@@ -29,6 +29,8 @@ public class ItemProtocol {
public static String item_x_position = "x_position"; public static String item_x_position = "x_position";
//y轴坐标 //y轴坐标
public static String item_y_position = "y_position"; public static String item_y_position = "y_position";
//重量
public static String item_weight = "weight";
//下发命令 //下发命令
public static String item_to_command = "to_command"; public static String item_to_command = "to_command";
@@ -97,6 +99,10 @@ public class ItemProtocol {
return this.getOpcFloatValue(item_y_position); return this.getOpcFloatValue(item_y_position);
} }
public float getWeight() {
return this.getOpcFloatValue(item_weight);
}
Boolean isonline; Boolean isonline;
public int getOpcIntegerValue(String protocol) { public int getOpcIntegerValue(String protocol) {
@@ -146,6 +152,7 @@ public class ItemProtocol {
list.add(new ItemDto(item_task, "任务号", "DB1.D6")); list.add(new ItemDto(item_task, "任务号", "DB1.D6"));
list.add(new ItemDto(item_x_position, "x坐标", "DB1.REAL10")); list.add(new ItemDto(item_x_position, "x坐标", "DB1.REAL10"));
list.add(new ItemDto(item_y_position, "y坐标", "DB1.REAL14")); list.add(new ItemDto(item_y_position, "y坐标", "DB1.REAL14"));
list.add(new ItemDto(item_weight, "重量", "DB1.REAL16"));
return list; return list;
} }

View File

@@ -88,6 +88,10 @@ public class PullTailManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
float y_position = 0; float y_position = 0;
float last_y_position = 0; float last_y_position = 0;
//重量
float weight = 0;
float last_weight = 0;
int heartbeat = 0; int heartbeat = 0;
int last_heartbeat = 0; int last_heartbeat = 0;
int to_command = 0; int to_command = 0;
@@ -158,6 +162,7 @@ public class PullTailManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
error = this.itemProtocol.getError(); error = this.itemProtocol.getError();
task = this.itemProtocol.getTask(); task = this.itemProtocol.getTask();
heartbeat = this.itemProtocol.getHeartbeat(); heartbeat = this.itemProtocol.getHeartbeat();
weight = this.itemProtocol.getWeight();
to_command = this.itemProtocol.getTo_command(); to_command = this.itemProtocol.getTo_command();
to_target = this.itemProtocol.getTo_target(); to_target = this.itemProtocol.getTo_target();
to_task = this.itemProtocol.getTo_task(); to_task = this.itemProtocol.getTo_task();
@@ -210,6 +215,10 @@ public class PullTailManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position)); logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position));
logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position" + last_y_position + "->" + y_position); logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position" + last_y_position + "->" + y_position);
} }
if (weight != last_weight) {
logServer.deviceItemValue(this.device_code, "weight", String.valueOf(weight));
logServer.deviceExecuteLog(this.device_code, "", "", "信号weight" + last_weight + "->" + weight);
}
// 更新指令状态 // 更新指令状态
if (mode == 3 && task > 0) { if (mode == 3 && task > 0) {
@@ -234,7 +243,7 @@ public class PullTailManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
} }
//反馈重量 //反馈重量
if (mode == 3 && action == 5 && move == 1 && task > 0) { if (mode == 3 && action == 5 && move == 0 && task > 0) {
Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task));
if (ObjectUtil.isNotEmpty(inst2)) { if (ObjectUtil.isNotEmpty(inst2)) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
@@ -338,6 +347,7 @@ public class PullTailManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
last_walk_y = walk_y; last_walk_y = walk_y;
last_error = error; last_error = error;
last_task = task; last_task = task;
last_weight = weight;
last_heartbeat = heartbeat; last_heartbeat = heartbeat;
last_to_task = to_task; last_to_task = to_task;
last_to_command = to_command; last_to_command = to_command;

View File

@@ -1,5 +1,6 @@
package org.nl.acs.device_driver.waste_foil_weighing_station; package org.nl.acs.device_driver.waste_foil_weighing_station;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -12,13 +13,12 @@ import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.DeviceErrorLogService;
import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl;
import org.nl.acs.instruction.domain.Instruction;
import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.monitor.DeviceStageMonitor;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.Map;
/** /**
* 废箔称重 * 废箔称重
@@ -112,6 +112,44 @@ public class WasteFoilWeighingStationDriver extends AbstractOpcDeviceDriver impl
logServer.deviceExecuteLog(this.device_code, "", "", "信号old_weight" + last_old_weight + "->" + old_weight); logServer.deviceExecuteLog(this.device_code, "", "", "信号old_weight" + last_old_weight + "->" + old_weight);
} }
if (mode == 0) {
this.setIsonline(false);
message = "未联机";
// 有报警
// } else if (error != 0) {
// this.setIsonline(false);
// this.setIserror(true);
// message = "有报警";
// //无报警
} else {
this.setIsonline(true);
this.setIserror(false);
if (error != 0) {
this.setIserror(true);
message = "有报警";
}
message = "";
Instruction instruction = null;
List toInstructions;
switch (mode) {
case 2:
log.debug("设备运转模式:等待工作");
break;
case 3:
log.debug("设备运转模式:等待工作");
break;
case 7:
// 称重确认完成
if (move > 0 && !requireSucess) {
weightConfirmSuccess();
}
break;
default:
break;
}
}
last_mode = mode; last_mode = mode;
last_move = move; last_move = move;
last_action = action; last_action = action;
@@ -119,6 +157,15 @@ public class WasteFoilWeighingStationDriver extends AbstractOpcDeviceDriver impl
} }
/**
* 称重确认完成
*/
public synchronized void weightConfirmSuccess() {
Map<String, Object> map = new LinkedHashMap<>();
map.put("to_command", "7");
this.writing(map);
}
@@ -134,6 +181,29 @@ public class WasteFoilWeighingStationDriver extends AbstractOpcDeviceDriver impl
logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value);
} }
public String getToParam() {
return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + ".";
}
/**
* 多个信号一起下发电气
*
* @param map
*/
public void writing(Map<String, Object> map) {
DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl");
Map<String, Object> itemMap = new LinkedHashMap<>();
map.forEach((key, value) -> {
if (ObjectUtil.isNotEmpty(value)) {
itemMap.put(getToParam() + key, value);
}
});
if (ObjectUtil.isNotEmpty(itemMap)) {
this.control(itemMap);
logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap);
}
}
@Override @Override
public JSONObject feedLmsRealFailedInfo() { public JSONObject feedLmsRealFailedInfo() {

View File

@@ -133,7 +133,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
} }
@Override @Override
public TaskDto findById(String id) { public TaskDto findById(String id) {
return ConvertUtil.convert(getById(id), TaskDto.class); return ConvertUtil.convert(getById(id), TaskDto.class);
} }

View File

@@ -398,27 +398,45 @@
<!-- </el-dropdown-menu>--> <!-- </el-dropdown-menu>-->
<!-- </el-dropdown>--> <!-- </el-dropdown>-->
<!-- </template>--> <!-- </template>-->
<el-button <el-dropdown>
type="text" <span class="el-dropdown-link">
icon="el-icon-finished" <i class="el-icon-setting">More</i>
@click="handleCommand(scope.$index, scope.row,'a')" <el-icon class="el-icon--right">
> <arrow-down />
{{ $t('task.select.Completed') }} </el-icon>
</el-button> </span>
<el-button <template #dropdown>
type="text" <el-dropdown-menu>
icon="el-icon-circle-close" <el-dropdown-item>
@click="handleCommand(scope.$index, scope.row,'b')" <el-button
> type="text"
{{ $t('task.select.Cancel') }} icon="el-icon-finished"
</el-button> @click="handleCommand(scope.$index, scope.row,'a')"
<el-button >
type="text" {{ $t('task.select.Completed') }}
icon="el-icon-folder-add" </el-button>
@click="handleCommand(scope.$index, scope.row,'c')" </el-dropdown-item>
> <el-dropdown-item>
{{ $t('task.select.Create_command') }} <el-button
</el-button> type="text"
icon="el-icon-circle-close"
@click="handleCommand(scope.$index, scope.row,'b')"
>
{{ $t('task.select.Cancel') }}
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
type="text"
icon="el-icon-folder-add"
@click="handleCommand(scope.$index, scope.row,'c')"
>
{{ $t('task.select.Create_command') }}
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>