Merge remote-tracking branch 'origin/master'

This commit is contained in:
2024-01-26 17:58:16 +08:00
22 changed files with 386 additions and 177 deletions

View File

@@ -39,6 +39,7 @@ import org.nl.acs.task.service.dto.TaskDto;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.system.service.impl.ParamServiceImpl;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.openscada.opc.lib.da.Server;
import org.springframework.beans.factory.annotation.Autowired;
@@ -579,6 +580,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
instdto.setPriority(priority);
instdto.setInstruction_status("0");
instdto.setExecute_device_code(start_point_code);
instdto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO"));
//判断关联的同一列烘箱设备是否都关门 都关门返回false有一个不关门就返回true
boolean isCloseDoor = this.judgeCloseDoor(instdto.getStart_device_code(), instdto.getNext_device_code());
@@ -614,7 +616,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
String start_addr = startDevice.getExtraValue().get("address").toString();
String next_addr = nextDevice.getExtraValue().get("address").toString();
logServer.deviceExecuteLog(device_code, "", "", "当前设备:" + device_code + ",下发指令:"
+ instdto.getInstruction_code() + ",指令起点:" + instdto.getStart_device_code()
+ instdto.getInstruction_code() +";指令号: "+ CodeUtil.getNewCode("INSTRUCT_NO") + ",指令起点:" + instdto.getStart_device_code()
+ ",指令终点:" + instdto.getNext_device_code());
this.writing("to_onset", start_addr);
this.writing("to_target", next_addr);

View File

@@ -469,16 +469,24 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
applyManipulatorActionRequest.setTask_code1(inst.getTask_code());
logServer.deviceExecuteLog(this.device_code, "", "", "task变化请求LMS,参数:" + applyManipulatorActionRequest);
try {
for (int i = 0; i < 5; i++) {
ApplyManipulatorActionResponse response = acsToWmsService.actionFinishRequest(applyManipulatorActionRequest);
if (response == null || response.getstatus() == 200) {
logServer.deviceExecuteLog(this.device_code, "", "", "task变化请求LMS,接口返回:" + response.getMessage());
break;
} else {
message = "task变化请求LMS失败: " + response.getMessage();
Thread.sleep(15000);
final ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll();
EXECUTOR.submit(() -> {
for (int i = 0; i < 5; i++) {
ApplyManipulatorActionResponse response = acsToWmsService.actionFinishRequest(applyManipulatorActionRequest);
if (response == null || response.getstatus() == 200) {
logServer.deviceExecuteLog(this.device_code, "", "", "task变化请求LMS,接口返回:" + response.getMessage());
break;
} else {
logServer.deviceExecuteLog(this.device_code, "", "", "任务变化请求LMS失败:" + response.getMessage());
message = "task变化请求LMS失败: " + response.getMessage();
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
} catch (Exception e) {
e.printStackTrace();
logServer.deviceExecuteLog(this.device_code, "", "", "task变化请求LMS失败" + e.getMessage());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -70,8 +70,8 @@ export default {
width: 100%;
& .sidebar-logo {
width: 32px;
height: 32px;
width: 55px;
height: 15px;
vertical-align: middle;
margin-right: 6px;
}

View File

@@ -109,11 +109,11 @@
<el-table-column prop="domain" label="domain"/>
<el-table-column prop="remark" label="备注" min-width="100"/>
<el-table-column prop="createtime" label="创建时间"/>
<el-table-column label="操作" width="200px" align="center" fixed="right">
<el-table-column label="操作" width="180px" align="center" fixed="right">
<template slot-scope="scope">
<el-button type="text" size="small" @click="handleClick(scope.row,'1')">修改</el-button>
<el-button type="text" size="small" @click="handleClick(scope.row,'2')">删除</el-button>
<el-button v-if="scope.row.opc_flag === '1'" type="text" size="small" @click="handleClick(scope.row,'0')">
<el-button type="text" icon="el-icon-edit" size="small" @click="handleClick(scope.row,'1')">修改</el-button>
<el-button type="text" icon="el-icon-delete" size="small" @click="handleClick(scope.row,'2')">删除</el-button>
<el-button v-if="scope.row.opc_flag === '1'" type="text" icon="el-icon-plus" size="small" @click="handleClick(scope.row,'0')">
新增PLC
</el-button>
</template>

View File

@@ -43,7 +43,7 @@
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:visible.sync="crud.status.cu"
:title="crud.status.title"
width="500px"
>
@@ -63,10 +63,10 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="device_code" label="设备编码" />
<el-table-column prop="error_code" label="报警编码" />
<el-table-column prop="error_info" label="报警信息" />
<el-table-column prop="error_time" label="报警时间" />
<el-table-column prop="device_code" label="设备编码" :min-width="flexWidth('device_code',crud.data,'设备编码')" />
<el-table-column prop="error_code" label="报警编码" :min-width="flexWidth('error_code',crud.data,'报警编码')" />
<el-table-column prop="error_info" label="报警信息" :min-width="flexWidth('error_info',crud.data,'报警信息')" />
<el-table-column prop="error_time" label="报警时间" :min-width="flexWidth('error_time',crud.data,'报警时间')" />
<el-table-column
v-permission="['admin','acsDeviceErrorLog:edit','acsDeviceErrorLog:del']"
label="操作"

View File

@@ -63,7 +63,7 @@
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:visible.sync="crud.status.cu"
:title="crud.status.title"
width="500px"
>
@@ -95,45 +95,45 @@
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="instruction_id" label="指令标识" />
<el-table-column prop="instruction_code" label="指令编号" width="200" />
<el-table-column prop="task_code" label="任务号" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="instruction_type" label="指令类型" width="120">
<el-table-column v-if="false" prop="instruction_id" label="指令标识" :min-width="flexWidth('instruction_id',crud.data,'指令标识')" />
<el-table-column prop="instruction_code" label="指令编号" :min-width="flexWidth('instruction_code',crud.data,'指令编号')" />
<el-table-column prop="task_code" label="任务号" :min-width="flexWidth('task_code',crud.data,'任务号')" />
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
<el-table-column prop="instruction_type" label="指令类型" width="120" >
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.instruction_type] }}
</template>
</el-table-column>
<el-table-column prop="instruction_status" label="指令状态">
<el-table-column prop="instruction_status" label="指令状态" :min-width="flexWidth('instruction_status',crud.data,'指令状态')" >
<template slot-scope="scope">
{{ dict.label.task_status[scope.row.instruction_status] }}
</template>
</el-table-column>
<el-table-column prop="start_point_code" label="起点" />
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="next_point_code2" label="终点2" />
<el-table-column prop="put_point_code" label="中转点" />
<el-table-column prop="start_height" label="取货高度" />
<el-table-column prop="next_height" label="放货高度" />
<el-table-column prop="carno" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<el-table-column prop="start_point_code" label="起点" :min-width="flexWidth('start_point_code',crud.data,'起点')" />
<el-table-column prop="next_point_code" label="终点" :min-width="flexWidth('next_point_code',crud.data,'终点')" />
<el-table-column prop="start_point_code2" label="起点2" :min-width="flexWidth('start_point_code2',crud.data,'起点2')" />
<el-table-column prop="next_point_code2" label="终点2" :min-width="flexWidth('next_point_code2',crud.data,'终点2')" />
<el-table-column prop="put_point_code" label="中转点" :min-width="flexWidth('put_point_code',crud.data,'中转点')" />
<el-table-column prop="start_height" label="取货高度" :min-width="flexWidth('start_height',crud.data,'取货高度')" />
<el-table-column prop="next_height" label="放货高度" :min-width="flexWidth('next_height',crud.data,'放货高度')" />
<el-table-column prop="carno" label="车号" :min-width="flexWidth('carno',crud.data,'车号')" />
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120" >
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="agv_inst_type" label="AGV指令类型">
<el-table-column prop="agv_inst_type" label="AGV指令类型" :min-width="flexWidth('agv_inst_type',crud.data,'AGV指令类型')" >
<!-- <template slot-scope="scope">-->
<!-- {{ dict.label.agv_inst_type[scope.row.agv_inst_type] }}-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="描述" />
<el-table-column prop="create_by" label="创建者" />
<el-table-column prop="create_time" label="创建时间" width="135" />
<el-table-column prop="update_by" label="修改者" />
<el-table-column prop="update_time" label="修改时间" width="135" />
<el-table-column prop="weight" label="重量" :min-width="flexWidth('weight',crud.data,'重量')" />
<el-table-column prop="quantity" label="数量" :min-width="flexWidth('quantity',crud.data,'数量')" />
<el-table-column prop="remark" label="描述" :min-width="flexWidth('remark',crud.data,'描述')" />
<el-table-column prop="create_by" label="创建者" :min-width="flexWidth('create_by',crud.data,'创建者')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="update_by" label="修改者" :min-width="flexWidth('update_by',crud.data,'修改者')" />
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
</el-table>
<!--分页组件-->
<pagination />
@@ -202,7 +202,7 @@ export default {
edit: false,
del: false,
reset: false,
download: true
download: false
}
})
},

View File

@@ -229,47 +229,47 @@
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="task_id" label="任务标识" />
<el-table-column prop="task_code" label="任务号" width="200" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="task_type" label="任务类型" width="120">
<el-table-column v-if="false" prop="task_id" label="任务标识" :min-width="flexWidth('task_id',crud.data,'任务标识')" />
<el-table-column prop="task_code" label="任务号" :min-width="flexWidth('task_code',crud.data,'任务号')" />
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
<el-table-column prop="task_type" label="任务类型" width="120" >
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.task_type] }}
</template>
</el-table-column>
<el-table-column prop="task_status" label="任务状态">
<el-table-column prop="task_status" label="任务状态" :min-width="flexWidth('task_status',crud.data,'任务状态')" >
<template slot-scope="scope">
{{ dict.label.task_status[scope.row.task_status] }}
</template>
</el-table-column>
<el-table-column prop="priority" label="任务优先级" />
<el-table-column prop="start_point_code" label="起点" />
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="start_point_code2" label="终点2" />
<el-table-column prop="put_point_code" label="中转点" />
<el-table-column prop="start_height" label="取货高度" />
<el-table-column prop="next_height" label="放货高度" />
<el-table-column prop="car_no" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<el-table-column prop="priority" label="任务优先级" :min-width="flexWidth('priority',crud.data,'任务优先级')" />
<el-table-column prop="start_point_code" label="起点" :min-width="flexWidth('start_point_code',crud.data,'起点')" />
<el-table-column prop="next_point_code" label="终点" :min-width="flexWidth('next_point_code',crud.data,'终点')" />
<el-table-column prop="start_point_code2" label="起点2" :min-width="flexWidth('start_point_code2',crud.data,'起点2')" />
<el-table-column prop="next_point_code2" label="终点2" :min-width="flexWidth('next_point_code2',crud.data,'终点2')" />
<el-table-column prop="put_point_code" label="中转点" :min-width="flexWidth('put_point_code',crud.data,'中转点')" />
<el-table-column prop="start_height" label="取货高度" :min-width="flexWidth('start_height',crud.data,'取货高度')" />
<el-table-column prop="next_height" label="放货高度" :min-width="flexWidth('next_height',crud.data,'放货高度')" />
<el-table-column prop="car_no" label="车号" :min-width="flexWidth('car_no',crud.data,'车号')" />
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120" >
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型">
<el-table-column prop="storage_task_type" label="立库任务类型" :min-width="flexWidth('storage_task_type',crud.data,'立库任务类型')" >
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="temperature" label="温度" />
<el-table-column prop="oven_time" label="烘箱时间" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="create_by" label="创建者" />
<el-table-column prop="create_time" label="创建时间" width="135" />
<el-table-column prop="update_by" label="修改者" />
<el-table-column prop="update_time" label="结束时间" width="135" />
<el-table-column prop="weight" label="重量" :min-width="flexWidth('weight',crud.data,'重量')" />
<el-table-column prop="temperature" label="温度" :min-width="flexWidth('temperature',crud.data,'温度')" />
<el-table-column prop="oven_time" label="烘箱时间" :min-width="flexWidth('oven_time',crud.data,'烘箱时间')" />
<el-table-column prop="quantity" label="数量" :min-width="flexWidth('quantity',crud.data,'数量')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_by" label="创建者" :min-width="flexWidth('create_by',crud.data,'创建者')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="update_by" label="修改者" :min-width="flexWidth('update_by',crud.data,'修改者')" />
<el-table-column prop="update_time" label="结束时间" :min-width="flexWidth('update_time',crud.data,'结束时间')" />
</el-table>
<!--分页组件-->
<pagination />
@@ -325,7 +325,7 @@ export default {
edit: false,
del: false,
reset: false,
download: true
download: false
}
})
},

View File

@@ -86,51 +86,51 @@
@select-all="crud.selectAllChange"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column v-if="false" prop="task_id" label="任务标识" />
<el-table-column prop="task_code" label="任务号(指令编号)" width="200" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column v-if="false" prop="task_id" label="任务标识" :min-width="flexWidth('task_id',crud.data,'任务标识')" />
<el-table-column prop="task_code" label="任务号(指令编号)" :min-width="flexWidth('task_code',crud.data,'任务号(指令编号)')" />
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
<el-table-column prop="task_type" label="任务类型" width="120">
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.task_type] }}
</template>
</el-table-column>
<el-table-column prop="task_status" label="状态">
<el-table-column prop="task_status" label="状态" width="60">
<template slot-scope="scope">
{{ dict.label.task_status[scope.row.task_status] }}
</template>
</el-table-column>
<el-table-column prop="priority" label="任务优先级" />
<el-table-column prop="start_point_code" label="起点" />
<el-table-column prop="next_point_code" label="终点" />
<el-table-column prop="start_point_code2" label="起点2" />
<el-table-column prop="next_point_code2" label="终点2" />
<el-table-column prop="put_point_code" label="中转点" />
<el-table-column prop="start_height" label="取货高度" />
<el-table-column prop="next_height" label="放货高度" />
<el-table-column prop="car_no" label="车号" />
<el-table-column prop="agv_system_type" label="AGV系统类型">
<el-table-column prop="priority" label="任务优先级" :min-width="flexWidth('priority',crud.data,'任务优先级')" />
<el-table-column prop="start_point_code" label="起点" :min-width="flexWidth('start_point_code',crud.data,'起点')" />
<el-table-column prop="next_point_code" label="终点" :min-width="flexWidth('next_point_code',crud.data,'终点')" />
<el-table-column prop="start_point_code2" label="起点2" :min-width="flexWidth('start_point_code2',crud.data,'起点2')" />
<el-table-column prop="next_point_code2" label="终点2" :min-width="flexWidth('next_point_code2',crud.data,'终点2')" />
<el-table-column prop="put_point_code" label="中转点" :min-width="flexWidth('put_point_code',crud.data,'中转点')" />
<el-table-column prop="start_height" label="取货高度" :min-width="flexWidth('start_height',crud.data,'取货高度')" />
<el-table-column prop="next_height" label="放货高度" :min-width="flexWidth('next_height',crud.data,'放货高度')" />
<el-table-column prop="car_no" label="车号" :min-width="flexWidth('car_no',crud.data,'车号')" />
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120px">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="agv_inst_type" label="AGV指令类型">
<el-table-column prop="agv_inst_type" label="AGV指令类型" width="120px">
<!-- <template slot-scope="scope">-->
<!-- {{ dict.label.agv_inst_type[scope.row.agv_inst_type] }}-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型">
<el-table-column prop="storage_task_type" label="立库任务类型" width="120px">
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>
</el-table-column>
<el-table-column prop="weight" label="重量" />
<el-table-column prop="temperature" label="温度" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="create_by" label="创建者" />
<el-table-column prop="create_time" label="创建时间" width="135" />
<el-table-column prop="update_by" label="修改者" />
<el-table-column prop="update_time" label="结束时间" width="135" />
<el-table-column prop="weight" label="重量" :min-width="flexWidth('weight',crud.data,'重量')" />
<el-table-column prop="temperature" label="温度" :min-width="flexWidth('temperature',crud.data,'温度')" />
<el-table-column prop="quantity" label="数量" :min-width="flexWidth('quantity',crud.data,'数量')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_by" label="创建者" :min-width="flexWidth('create_by',crud.data,'创建者')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="update_by" label="修改者" :min-width="flexWidth('update_by',crud.data,'修改者')" />
<el-table-column prop="update_time" label="结束时间" :min-width="flexWidth('update_time',crud.data,'结束时间')" />
</el-table>
<!--分页组件-->
<pagination />

View File

@@ -31,7 +31,7 @@
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:visible.sync="crud.status.cu"
:title="crud.status.title"
width="500px"
>

View File

@@ -32,7 +32,7 @@
style="width: 190px"
@change="crud.toQuery"
>
<el-option v-for="item in materialList" :key="item.id" :label="item.label" :value="item.value" />
<el-option v-for="item in dict.materialList" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
<el-select
v-model="query.status"
@@ -86,7 +86,7 @@
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:visible.sync="crud.status.cu"
:title="crud.status.title"
width="500px"
>
@@ -119,48 +119,52 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column v-if="false" prop="instruction_id" label="指令标识" />
<el-table-column prop="instruction_code" label="指令编号" />
<el-table-column prop="instruction_type" label="指令类型">
<el-table-column v-if="false" prop="instruction_id" label="指令标识" :min-width="flexWidth('instruction_id',crud.data,'指令标识')" />
<el-table-column prop="instruction_code" label="指令编号" :min-width="flexWidth('instruction_code',crud.data,'指令编号')" />
<el-table-column prop="instruction_type" label="指令类型" width="120px" >
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.instruction_type] }}
</template>
</el-table-column>
<!-- <el-table-column prop="link_num" label="关联编号" />-->
<el-table-column prop="task_code" label="任务号" />
<el-table-column prop="vehicle_code" label="载具号" />
<el-table-column prop="instruction_status" label="指令状态">
<el-table-column prop="task_code" label="任务号" :min-width="flexWidth('task_code',crud.data,'任务号')" />
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
<el-table-column prop="instruction_status" label="指令状态" :min-width="flexWidth('instruction_status',crud.data,'指令状态')">
<template slot-scope="scope">
<span v-if="scope.row.instruction_status=='0' ">就绪</span>
<span v-if="scope.row.instruction_status=='1' ">执行中</span>
<span v-if="scope.row.instruction_status=='2' ">完成</span>
</template>
</el-table-column>
<el-table-column prop="send_status" label="下发状态">
<el-table-column prop="send_status" label="下发状态" :min-width="flexWidth('send_status',crud.data,'下发状态')" >
<template slot-scope="scope">
<span v-if="scope.row.send_status=='0' ">未下发</span>
<span v-if="scope.row.send_status=='1' ">成功</span>
<span v-if="scope.row.send_status=='2' ">失败</span>
</template>
</el-table-column>
<el-table-column prop="start_point_code" label="取货点1" />
<el-table-column prop="next_point_code" label="放货点1" />
<el-table-column prop="start_point_code2" label="取货点2" />
<el-table-column prop="next_point_code2" label="放货点2" />
<el-table-column prop="put_point_code" label="中转点" />
<el-table-column prop="execute_device_code" label="当前执行设备" />
<el-table-column prop="carno" label="车号" />
<el-table-column prop="weight" label="重量" />
<el-table-column prop="agv_jobno" label="AGV任务号" />
<el-table-column prop="agv_inst_type" label="AGV任务类型" />
<el-table-column prop="agv_system_type" label="AGV系统类型" />
<el-table-column prop="start_height" label="取货高度" />
<el-table-column prop="next_height" label="放货高度" />
<el-table-column prop="remark" label="描述" />
<el-table-column prop="create_by" label="创建者" />
<el-table-column prop="create_time" label="创建时间" width="135" />
<el-table-column prop="start_point_code" label="取货点1" :min-width="flexWidth('start_point_code',crud.data,'取货点1')" />
<el-table-column prop="next_point_code" label="放货点1" :min-width="flexWidth('next_point_code',crud.data,'放货点1')" />
<el-table-column prop="start_point_code2" label="取货点2" :min-width="flexWidth('start_point_code2',crud.data,'取货点2')" />
<el-table-column prop="next_point_code2" label="放货点2" :min-width="flexWidth('next_point_code2',crud.data,'放货点2')" />
<el-table-column prop="put_point_code" label="中转点" :min-width="flexWidth('put_point_code',crud.data,'中转点')" />
<el-table-column prop="execute_device_code" label="当前执行设备" :min-width="flexWidth('execute_device_code',crud.data,'当前执行设备')" />
<el-table-column prop="carno" label="车号" :min-width="flexWidth('carno',crud.data,'车号')" />
<el-table-column prop="weight" label="重量" :min-width="flexWidth('weight',crud.data,'重量')" />
<el-table-column prop="agv_jobno" label="AGV任务号" :min-width="flexWidth('agv_jobno',crud.data,'AGV任务号')" />
<el-table-column prop="agv_inst_type" label="AGV任务类型" :min-width="flexWidth('agv_inst_type',crud.data,'AGV任务类型')" />
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120px">
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="start_height" label="取货高度" :min-width="flexWidth('start_height',crud.data,'取货高度')" />
<el-table-column prop="next_height" label="放货高度" :min-width="flexWidth('next_height',crud.data,'放货高度')" />
<el-table-column prop="remark" label="描述" :min-width="flexWidth('remark',crud.data,'描述')" />
<el-table-column prop="create_by" label="创建者" :min-width="flexWidth('create_by',crud.data,'创建者')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column
<!-- <el-table-column
v-permission="['admin','instruction:edit','instruction:del']"
fixed="left"
label="操作"
@@ -180,6 +184,94 @@
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column> -->
<el-table-column
v-permission="['admin','instruction:edit','instruction:del']"
label="操作"
width="100"
align="center"
fixed="right"
>
<template slot-scope="scope">
<!-- <el-button-group>
<el-button
type="text"
icon="el-icon-finished"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'a' })"
>
完成
</el-button>
<el-button
type="text"
icon="el-icon-circle-close"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'b' })"
>
取消
</el-button>
<el-button
type="text"
icon="el-icon-folder-add"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'c' })"
>
强制取消
</el-button>
<el-button
type="text"
icon="el-icon-folder-add"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'd' })"
>
初始化
</el-button>
</el-button-group> -->
<el-dropdown>
<span class="el-dropdown-link">
<i class="el-icon-setting">More</i>
<!-- <el-icon class="el-icon--right">
<arrow-down />
</el-icon> -->
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>
<el-button
type="text"
icon="el-icon-finished"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'a' })"
>
完成
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
type="text"
icon="el-icon-circle-close"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'b' })"
>
取消
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
type="text"
icon="el-icon-folder-add"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'c' })"
>
强制取消
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
type="text"
icon="el-icon-check"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'd' })"
>
初始化
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
@@ -232,7 +324,7 @@ const defaultForm = {
update_time: null
}
export default {
dicts: ['task_status', 'task_type'],
dicts: ['task_status', 'task_type', 'agv_system_type'],
name: 'Instruction',
components: { crudOperation, pagination },
mixins: [presenter(), header(), form(defaultForm), crud()],
@@ -370,4 +462,5 @@ export default {
.el-icon-arrow-down {
font-size: 12px;
}
</style>

View File

@@ -408,47 +408,46 @@
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="25" />
<el-table-column v-if="false" prop="task_id" label="任务标识" />
<el-table-column prop="task_code" label="任务号" width="100" />
<el-table-column prop="task_type" label="任务类型" width="120">
<el-table-column type="selection" width="50" />
<el-table-column v-if="false" prop="task_id" label="任务标识" :min-width="flexWidth('task_id',crud.data,'任务标识')" />
<el-table-column prop="task_code" label="任务号" :min-width="flexWidth('task_code',crud.data,'任务号')" />
<el-table-column prop="task_type" label="任务类型" width="120px" >
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.task_type] }}
</template>
</el-table-column>
<!-- <el-table-column prop="link_num" label="关联编号" />-->
<el-table-column prop="vehicle_code" label="载具号" width="100" />
<el-table-column prop="task_status" label="任务状态" width="60">
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
<el-table-column prop="task_status" label="任务状态" :min-width="flexWidth('task_status',crud.data,'任务状态')" >
<template slot-scope="scope">
{{ dict.label.task_status[scope.row.task_status] }}
</template>
</el-table-column>
<el-table-column prop="priority" label="优先级" width="100" />
<el-table-column prop="start_point_code" label="取货点1" width="100px" />
<el-table-column prop="next_point_code" label="放货点1" width="120px" />
<el-table-column prop="start_point_code2" label="取货点2" width="120px" />
<el-table-column prop="next_point_code2" label="放货点2" width="120px" />
<el-table-column prop="put_point_code" label="中转点" width="100px" />
<!-- <el-table-column prop="agv_task_type" label="AGV任务类型" width="120px" />-->
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120px">
<el-table-column prop="priority" label="优先级" :min-width="flexWidth('priority',crud.data,'优先级')" />
<el-table-column prop="start_point_code" label="取货点1" :min-width="flexWidth('start_point_code',crud.data,'取货点1')" />
<el-table-column prop="next_point_code" label="放货点1" :min-width="flexWidth('next_point_code',crud.data,'放货点1')" />
<el-table-column prop="start_point_code2" label="取货点2" :min-width="flexWidth('start_point_code2',crud.data,'取货点2')" />
<el-table-column prop="next_point_code2" label="放货点2" :min-width="flexWidth('next_point_code2',crud.data,'放货点2')" />
<el-table-column prop="put_point_code" label="中转点" :min-width="flexWidth('put_point_code',crud.data,'中转点')" />
<el-table-column prop="agv_system_type" label="AGV系统类型" width="120px" >
<template slot-scope="scope">
{{ dict.label.agv_system_type[scope.row.agv_system_type] }}
</template>
</el-table-column>
<el-table-column prop="storage_task_type" label="立库任务类型" width="120px">
<el-table-column prop="storage_task_type" label="立库任务类型" :min-width="flexWidth('storage_task_type',crud.data,'立库任务类型')" >
<template slot-scope="scope">
{{ dict.label.storage_task_type[scope.row.storage_task_type] }}
</template>
</el-table-column>
<el-table-column prop="start_height" label="取货高度" />
<el-table-column prop="next_height" label="放货高度" />
<el-table-column prop="device_code" label="纸管库出库仓位" />
<el-table-column prop="qty" label="纸管库出库数量" />
<el-table-column prop="truss_type" label="内包间行架任务类型" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="create_by" label="创建者" />
<el-table-column prop="create_time" label="创建时间" width="135" />
<el-table-column
<el-table-column prop="start_height" label="取货高度" :min-width="flexWidth('start_height',crud.data,'取货高度')" />
<el-table-column prop="next_height" label="放货高度" :min-width="flexWidth('next_height',crud.data,'放货高度')" />
<el-table-column prop="device_code" label="纸管库出库仓位" :min-width="flexWidth('device_code',crud.data,'纸管库出库仓位')" />
<el-table-column prop="qty" label="纸管库出库数量" :min-width="flexWidth('qty',crud.data,'纸管库出库数量')" />
<el-table-column prop="truss_type" label="内包间行架任务类型" :min-width="flexWidth('truss_type',crud.data,'内包间行架任务类型')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_by" label="创建者" :min-width="flexWidth('create_by',crud.data,'创建者')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<!-- <el-table-column
v-permission="['admin','task:edit','task:del']"
fixed="left"
label="操作"
@@ -467,6 +466,39 @@
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column> -->
<el-table-column
v-permission="['admin','task:edit','task:del']"
label="操作"
width="200"
align="center"
fixed="right"
>
<template slot-scope="scope">
<el-button-group>
<el-button
type="text"
icon="el-icon-finished"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'a' })"
>
完成
</el-button>
<el-button
type="text"
icon="el-icon-circle-close"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'b' })"
>
取消
</el-button>
<el-button
type="text"
icon="el-icon-folder-add"
@click="handleCommand({ index: scope.$index, row: scope.row, command: 'c' })"
>
创建指令
</el-button>
</el-button-group>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
@@ -497,7 +529,7 @@ export default {
edit: true,
del: true,
reset: false,
download: true
download: false
},
crudMethod: { ...crudTask }
})
@@ -707,14 +739,16 @@ export default {
// })
// },
beforeHandleCommand(index, row, command) {
/* beforeHandleCommand(index, row, command) {
console.log(command.command)
return {
'index': index,
'row': row,
'command': command
}
},
}, */
handleCommand(command) {
console.log(command.command)
switch (command.command) {
case 'a':// 完成
this.finish(command.index, command.row)
@@ -836,4 +870,11 @@ export default {
.el-icon-arrow-down {
font-size: 12px;
}
.custom-cell {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>

View File

@@ -56,8 +56,8 @@ export default {
codeUrl: '',
cookiePass: '',
loginForm: {
username: 'admin',
password: '123456',
username: '',
password: '',
rememberMe: false,
code: '',
uuid: ''

View File

@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
@Data
public class CommonFinalParam {
private final String DELETE = "0";
public static final String DELETE = "0";
/**
* 分隔符
*/

View File

@@ -2,6 +2,7 @@ package org.nl.acs.device_driver.agv.xg_agv_car;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@@ -123,6 +124,31 @@ public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements Device
*/
private int manua_confirm = 0;
/**
* 是否推送场景的状态 0=可推送 1=正在更新场景 2=正在执行运单
*/
private String upload_scene_status;
/**
* 机器人当前运单
*/
private String current_order;
/**
* 机器人连接状态 0表示断连 1表示连接上
*/
private String connection_status;
/**
* 机器人可接单状态 true=可接单 false=不可接单
*/
private String dispatchable;
/**
* core出错标识
*/
private boolean is_error;
/**
* 是否正在执行用户下发的运单
*/
private boolean procBusiness;
String device_code = null;
String container;
String container_type_desc;
@@ -152,7 +178,28 @@ public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements Device
@Override
public JSONObject getDeviceStatusName() {
return null;
getAgvStatus();
JSONObject jo = new JSONObject();
String isError;
if(is_error){
isError = "报错";
}else{
isError = "正常";
}
if(CommonFinalParam.ONE.equals(upload_scene_status)){
upload_scene_status = "正在更新场景";
}else if(CommonFinalParam.TWO.equals(upload_scene_status)){
upload_scene_status = "正在执行运单";
}else if(CommonFinalParam.DELETE.equals(upload_scene_status)){
upload_scene_status = "可推送";
}
jo.put("is_error",isError);
jo.put("upload_scene_status",upload_scene_status);
jo.put("procBusiness",procBusiness);
jo.put("current_order",current_order);
jo.put("connection_status",connection_status);
jo.put("dispatchable",dispatchable);
return jo;
}
@@ -162,6 +209,7 @@ public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements Device
}
/**
* 获取机器人信息
*/
@@ -169,7 +217,23 @@ public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements Device
HttpResponse robotInfo = xianGongAgvService.getRobotInfo(this.getDevice().getDevice_name());
if(robotInfo.getStatus() == 200){
JSONObject jsonObject = JSONObject.parseObject(robotInfo.body());
String report = jsonObject.getString("report");
//core出错标识
is_error = jsonObject.getBooleanValue("is_error");
//是否推送场景的状态 0=可推送 1=正在更新场景 2=正在执行运单
upload_scene_status = jsonObject.getString("upload_scene_status");
JSONArray objects = JSONObject.parseArray(report);
for (int i = 0; i < objects.size(); i++) {
JSONObject json = (JSONObject)objects.get(i);
//是否正在执行用户下发的运单
procBusiness = json.getBooleanValue("procBusiness");
//机器人当前运单
current_order = json.getString("current_order");
//机器人连接状态 0表示断连 1表示连接上
connection_status = json.getString("connection_status");
//机器人可接单状态 true=可接单 false=不可接单
dispatchable = json.getString("dispatchable");
}
}else{
log.info("请求{}机器人状态失败", this.getDevice().getDevice_name());
}

View File

@@ -161,6 +161,7 @@ public class ItemProtocol {
list.add(new ItemDto(item_move2, "后工位光电信号", "DB15.B3"));
list.add(new ItemDto(item_action, "动作信号", "DB15.B4"));
list.add(new ItemDto(item_walk_y, "行走列", "DB15.B5"));
list.add(new ItemDto(item_task, "任务号", "DB15.D3"));
list.add(new ItemDto(item_error, "报警信号", "DB15.B6"));
list.add(new ItemDto(item_x_position, "x坐标", "DB15.REAL10"));
list.add(new ItemDto(item_y_position, "y坐标", "DB15.REAL14"));

View File

@@ -29,7 +29,6 @@ public class DeviceStageMonitorController {
private final DeviceStageMonitorService deviceStageMonitorService;
@Log("获取舞台设备信息")
@PostMapping("/getDeviceByCodes")
public ResponseEntity<Object> getDeviceByCodes(@RequestBody String json) throws Exception {
JSONArray jsonArray = JSONArray.parseArray(json);

View File

@@ -202,7 +202,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
Object his = accessor_value.getValue(itemId);
if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && his != null) {
log.warn("opc 值不健康 item: {}, 状态: {}", itemId, itemState.getQuality());
valueAllNotNull = true;
valueAllNotNull = false;
}
if (!UnifiedDataAppService.isEquals(value, his)) {
@@ -231,29 +231,30 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
random *= 1000;
if (this.all_null < 3) {
if (log.isWarnEnabled()) {
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null, 5000 + random);
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,3);
}
ThreadUtl.sleep((long) (5000 + random));
ThreadUtl.sleep( 3000);
break start;
} else if (this.all_null < 6) {
if (log.isWarnEnabled()) {
log.warn(tag + "重新创建server");
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null, 30000 + random);
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,3);
}
// ThreadUtl.sleep((long) (30000 + random));
ThreadUtl.sleep((long) ((new Random()).nextInt(3) + 1) * 1000);
ThreadUtl.sleep(3000);
break start;
} else if (this.all_null < 12) {
if (log.isWarnEnabled()) {
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, '\uea60' + random);
log.warn(tag + "重新创建server");
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,3);
}
ThreadUtl.sleep((long) ('\uea60' + random));
ThreadUtl.sleep(3000);
break start;
} else {
if (log.isWarnEnabled()) {
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, 120000 + random);
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, 5000);
}
ThreadUtl.sleep((long) (120000 + random));
ThreadUtl.sleep((long) (5000));
}
++this.all_null;

View File

@@ -110,7 +110,7 @@
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<!-- <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC读取字段</span>
</div>
@@ -145,9 +145,9 @@
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-card> -->
<el-card class="box-card" shadow="never">
<!-- <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC写入字段</span>
</div>
@@ -190,7 +190,7 @@
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-card> -->
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">

View File

@@ -483,7 +483,7 @@
<!-- <el-table-column prop="link_num" label="关联编号" />-->
<el-table-column prop="vehicle_code" :label="$t('task.txt_box.Vehicle_number')" :min-width="flexWidth('vehicle_code',crud.data,$t('task.txt_box.Vehicle_number'))" />
<el-table-column prop="task_status" :label="$t('task.txt_box.Task_status')" width="150px">
<template slot-scope="scope" width="120px">
<template slot-scope="scope">
<span v-if="scope.row.task_status==='0' ">{{ $t('task.select.Ready') }}</span>
<span v-if="scope.row.task_status==='1' ">{{ $t('task.select.In_progress') }}</span>
<span v-if="scope.row.task_status==='2' ">{{ $t('task.select.Completed') }}</span>

View File

@@ -36,7 +36,7 @@
label-position="right"
label-suffix=":"
>
<el-form-item :label="$t('dict.table_title.code_Name')">
<el-form-item :label="$t('dict.table_title.code_Name')">
<el-input
v-model="query.blurry"
clearable
@@ -63,7 +63,7 @@
@current-change="handleCurrentChange"
>
<el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip prop="code" :label="$t('dict.table_value.Code')" />
<el-table-column show-overflow-tooltip prop="code" :label="$t('dict.table_value.Code')" />
<el-table-column show-overflow-tooltip prop="name" :label="$t('dict.table_value.Name')" />
<el-table-column
v-permission="['admin','dict:edit','dict:del']"
@@ -97,7 +97,7 @@
type="primary"
icon="el-icon-plus"
@click="$refs.dictDetail && $refs.dictDetail.crud.toAdd()"
>{{ $t('common.Create') }}
>{{ $t('auto.common.Create') }}
</el-button>
</div>
<dictDetail ref="dictDetail" :permission="permission" />