add:监控页面堆垛机设置及路由设备类型
This commit is contained in:
@@ -26,6 +26,7 @@ import org.nl.acs.device.service.mapper.DeviceExtraMapper;
|
||||
import org.nl.acs.device.domain.DeviceRunpoint;
|
||||
import org.nl.acs.device.service.mapper.DeviceRunpointMapper;
|
||||
import org.nl.acs.device_driver.manipulator.standard_manipulator.OvenGantryManipulatorDeviceDriver;
|
||||
import org.nl.acs.monitor.DeviceStageMonitor;
|
||||
import org.nl.acs.route.domain.RouteLine;
|
||||
import org.nl.acs.route.service.mapper.RouteLineMapper;
|
||||
//import org.nl.acs.stage.domain.Stage;
|
||||
@@ -1188,6 +1189,9 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
|
||||
StandardCoveyorControlWithScannerDeviceDriver standardCoveyorControlWithScannerDeviceDriver
|
||||
= (StandardCoveyorControlWithScannerDeviceDriver) device.getDeviceDriver();
|
||||
standardCoveyorControlWithScannerDeviceDriver.setDeviceStatus(form);
|
||||
} else if (device.getDeviceDriver() instanceof DeviceStageMonitor) {
|
||||
DeviceStageMonitor deviceStageMonitor = (DeviceStageMonitor) device.getDeviceDriver();
|
||||
deviceStageMonitor.setDeviceStatus(form);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -236,6 +236,19 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
*/
|
||||
Boolean requireSucess = false;
|
||||
|
||||
/**
|
||||
* 禁止入库
|
||||
*/
|
||||
private boolean prohibitInWarehouse = false;
|
||||
/**
|
||||
* 禁止出库
|
||||
*/
|
||||
private boolean prohibitOutWarehouse = false;
|
||||
/**
|
||||
* 停止接收任务
|
||||
*/
|
||||
private boolean stopReceiveTask = false;
|
||||
|
||||
|
||||
@Override
|
||||
public Device getDevice() {
|
||||
@@ -406,7 +419,8 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
Instruction instructionBack = instructionService.findByCodeFromCache(String.valueOf(backTask));
|
||||
if (CollectionUtil.isNotEmpty(inst) && ObjectUtil.isNotEmpty(instructionBack)) {
|
||||
inst.add(instructionBack);
|
||||
}if (CollectionUtil.isEmpty(inst) && ObjectUtil.isNotEmpty(instructionBack)){
|
||||
}
|
||||
if (CollectionUtil.isEmpty(inst) && ObjectUtil.isNotEmpty(instructionBack)) {
|
||||
inst.add(null);
|
||||
inst.add(instructionBack);
|
||||
}
|
||||
@@ -465,7 +479,6 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
|
||||
/**
|
||||
* 申请任务
|
||||
*
|
||||
*/
|
||||
public synchronized boolean applyTask() {
|
||||
Date date = new Date();
|
||||
@@ -503,7 +516,6 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -561,8 +573,7 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
map.put("to_command", CommandEnum.PICKUP.getStatus().toString());
|
||||
map.put("to_front_task", inst.get(0).getInstruction_code());
|
||||
|
||||
}
|
||||
else if (inst.size()>1 && ObjectUtil.isEmpty(inst.get(1))) {
|
||||
} else if (inst.size() > 1 && ObjectUtil.isEmpty(inst.get(1))) {
|
||||
map.put("to_device_code", this.getDevice().getAddress());
|
||||
map.put("to_command", CommandEnum.PICKUP.getStatus().toString());
|
||||
map.put("to_back_task", inst.get(1).getInstruction_code());
|
||||
@@ -759,13 +770,36 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
return null;
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_name", this.getDevice().getDevice_name());
|
||||
jo.put("prohibitInWarehouse", this.prohibitInWarehouse);
|
||||
jo.put("prohibitOutWarehouse", this.prohibitOutWarehouse);
|
||||
jo.put("stopReceiveTask", this.stopReceiveTask);
|
||||
jo.put("is_click", true);
|
||||
jo.put("driver_type", "double_station_stacker");
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDeviceStatus(JSONObject data) {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(data)) {
|
||||
//监控大屏下发作业命令清警-5、召回-7、急停-8
|
||||
Integer toCommand = data.getInteger("toCommand");
|
||||
if (toCommand != null) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("to_command", toCommand);
|
||||
this.writing(map);
|
||||
}
|
||||
//ACS监控大屏设置禁止入库、禁止出库、停止接收任务
|
||||
Boolean prohibitInWarehouse = data.getBoolean("prohibitInWarehouse");
|
||||
this.prohibitInWarehouse = prohibitInWarehouse;
|
||||
Boolean prohibitOutWarehouse = data.getBoolean("prohibitOutWarehouse");
|
||||
this.prohibitOutWarehouse = prohibitOutWarehouse;
|
||||
Boolean stopReceiveTask = data.getBoolean("stopReceiveTask");
|
||||
this.stopReceiveTask = stopReceiveTask;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 完成指令
|
||||
@@ -824,6 +858,7 @@ public class DoubleStationStackerDeviceDriver extends AbstractOpcDeviceDriver im
|
||||
|
||||
/**
|
||||
* 将扩展表中的字符串数据转换成集合
|
||||
*
|
||||
* @param extraName
|
||||
* @return
|
||||
*/
|
||||
|
||||
@@ -41,10 +41,18 @@ public class RouteLine extends CommonModel<RouteLine> implements Serializable {
|
||||
@NotBlank
|
||||
private String device_code;
|
||||
|
||||
@ApiModelProperty(value = "设备类型")
|
||||
@NotBlank
|
||||
private String start_device_type;
|
||||
|
||||
@ApiModelProperty(value = "下一设备")
|
||||
@NotBlank
|
||||
private String next_device_code;
|
||||
|
||||
@ApiModelProperty(value = "下一设备类型")
|
||||
@NotBlank
|
||||
private String next_device_type;
|
||||
|
||||
@ApiModelProperty(value = "路线类型")
|
||||
private String type;
|
||||
|
||||
|
||||
@@ -30,9 +30,15 @@ public class RouteLineDto implements Serializable {
|
||||
@ApiModelProperty(value = "设备编码")
|
||||
private String device_code;
|
||||
|
||||
@ApiModelProperty(value = "起点设备类型")
|
||||
private String start_device_type;
|
||||
|
||||
@ApiModelProperty(value = "下一设备")
|
||||
private String next_device_code;
|
||||
|
||||
@ApiModelProperty(value = "终点设备类型")
|
||||
private String next_device_type;
|
||||
|
||||
@ApiModelProperty(value = "路线类型")
|
||||
private String type;
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.nl.acs.auto.initial.ApplicationAutoInitial;
|
||||
import org.nl.acs.common.base.CommonFinalParam;
|
||||
import org.nl.acs.device.domain.Device;
|
||||
import org.nl.acs.device.enums.DeviceType;
|
||||
import org.nl.acs.device.service.DeviceService;
|
||||
import org.nl.acs.device.service.dto.DeviceDto;
|
||||
import org.nl.acs.device.service.mapper.DeviceMapper;
|
||||
import org.nl.acs.device_driver.RouteableDeviceDriver;
|
||||
import org.nl.acs.opc.DeviceAppService;
|
||||
@@ -85,6 +87,8 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
|
||||
private RoutePlanService routePlanService;
|
||||
@Autowired
|
||||
private DeviceAppService deviceAppService;
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@Override
|
||||
public PageInfo<RouteLineDto> queryAll(RouteLineQueryParam query, Pageable pageable) {
|
||||
@@ -298,13 +302,17 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
|
||||
ArrayList<String> next_arr = (ArrayList<String>) whereJson.get("next_device_code");
|
||||
for (int i = 0; i < start_arr.size(); i++) {
|
||||
String device_code = start_arr.get(i);
|
||||
DeviceDto start_device = deviceService.findByCode(device_code);
|
||||
for (int j = 0; j < next_arr.size(); j++) {
|
||||
String next_device_code = next_arr.get(j);
|
||||
DeviceDto next_device = deviceService.findByCode(next_device_code);
|
||||
RouteLineDto dto = new RouteLineDto();
|
||||
dto.setWeights(String.valueOf(whereJson.get("weights")));
|
||||
dto.setRoute_plan_id(String.valueOf(whereJson.get("route_plan_id")));
|
||||
dto.setDevice_code(device_code);
|
||||
dto.setStart_device_type(start_device.getDevice_type());
|
||||
dto.setNext_device_code(next_device_code);
|
||||
dto.setNext_device_type(next_device.getDevice_type());
|
||||
dto.setType(String.valueOf(whereJson.get("type")));
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
String now = DateUtil.now();
|
||||
@@ -467,6 +475,7 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
|
||||
|
||||
/**
|
||||
* floyd算法,将所有设备之间的最短路线计算出来,如果是null 则代表不通
|
||||
*
|
||||
* @param graph
|
||||
*/
|
||||
private static void floyd(Map[][] graph) {
|
||||
|
||||
@@ -10,7 +10,9 @@ export default {
|
||||
'table_title': {
|
||||
'route_plan_id': 'Routing Scheme',
|
||||
'device_code': 'Current Device Name',
|
||||
'device_type': 'Current Device Type',
|
||||
'next_device_code': 'Post Device Name',
|
||||
'next_device_type': 'Post Device Type',
|
||||
'type': 'Route Type',
|
||||
'transport_route': 'Transport Route',
|
||||
'agv_route': 'AGV Route',
|
||||
|
||||
@@ -10,7 +10,9 @@ export default {
|
||||
'table_title': {
|
||||
'route_plan_id': 'Skema Rute ',
|
||||
'device_code': 'Nama Divais Saat Ini',
|
||||
'device_type': 'Nama Divais Saat Tipe',
|
||||
'next_device_code': 'Nama Perangkat Rear',
|
||||
'next_device_type': 'Nama Perangkat Tipe',
|
||||
'type': 'Jenis Rute',
|
||||
'transport_rute': 'Rute Pengiriman',
|
||||
'agv_rute': 'Agv Rute',
|
||||
|
||||
@@ -10,7 +10,9 @@ export default {
|
||||
'table_title': {
|
||||
'route_plan_id': '路由方案',
|
||||
'device_code': '当前设备名称',
|
||||
'device_type': '设备类型',
|
||||
'next_device_code': '后置设备名称',
|
||||
'next_device_type': '后置设备类型',
|
||||
'type': '路由类型',
|
||||
'transport_route': '输送路由',
|
||||
'agv_route': 'agv路由',
|
||||
|
||||
@@ -152,7 +152,10 @@
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="crud.cancelCU">{{ $t('task.select.Cancel') }}</el-button>
|
||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">{{ $t('task.select.Confirm') }}</el-button>
|
||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">{{
|
||||
$t('task.select.Confirm')
|
||||
}}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
@@ -167,7 +170,12 @@
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column v-if="false" prop="line_uuid" label="路线标识" />
|
||||
<el-table-column prop="device_code" :label="$t('device.device_table_title.device_encoding')" :min-width="flexWidth('device_code',crud.data,$t('device.device_table_title.device_encoding'))" />
|
||||
<el-table-column
|
||||
prop="device_code"
|
||||
:label="$t('device.device_table_title.device_encoding')"
|
||||
:min-width="flexWidth('device_code',crud.data,$t('device.device_table_title.device_encoding'))"
|
||||
/>
|
||||
<el-table-column prop="start_device_type" min-width="120" :label="$t('route.table_title.device_type')" />
|
||||
<el-table-column v-if="false" prop="device_code" :label="$t('device.device_table_title.device_name')" />
|
||||
<el-table-column prop="type" :label="$t('route.table_title.type')">
|
||||
<template slot-scope="scope">
|
||||
@@ -177,10 +185,15 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="next_device_code" min-width="120" :label="$t('route.table_title.next_device_code')" />
|
||||
<el-table-column v-if="false" prop="next_device_code" min-width="120" label="后置设备名称" />
|
||||
<el-table-column v-if="false" prop="next_device_code" min-width="120" label="后置设备类型" />
|
||||
<el-table-column prop="next_device_type" min-width="120" :label="$t('route.table_title.next_device_type')" />
|
||||
<el-table-column prop="weights" :label="$t('route.table_title.weights')" />
|
||||
|
||||
<el-table-column :label="$t('auto.common.is_on')" align="center" prop="is_active" :min-width="flexWidth('is_active',crud.data,$t('auto.common.is_on'))">
|
||||
<el-table-column
|
||||
:label="$t('auto.common.is_on')"
|
||||
align="center"
|
||||
prop="is_active"
|
||||
:min-width="flexWidth('is_active',crud.data,$t('auto.common.is_on'))"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.is_active"
|
||||
|
||||
@@ -177,6 +177,35 @@
|
||||
<el-button type="primary" @click="saveBarcode">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 堆垛机弹出框 -->
|
||||
<el-dialog title="设备设置" :visible.sync="dialogFormVisible8" width="35%">
|
||||
<el-form :model="form" size="small">
|
||||
<el-form-item label="设备编号" prop="device_code" label-width="120px">
|
||||
<el-input v-model="form.device_code" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="作业命令" prop="toCommand" label-width="120px">
|
||||
<el-radio-group v-model="form.toCommand">
|
||||
<el-radio-button :label="7">召回</el-radio-button>
|
||||
<el-radio-button :label="8">急停</el-radio-button>
|
||||
<el-radio-button :label="5">清警</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="禁止入库" prop="prohibitInWarehouse" label-width="120px">
|
||||
<el-switch v-model="form.prohibitInWarehouse" />
|
||||
</el-form-item>
|
||||
<el-form-item label="禁止出库" prop="prohibitOutWarehouse" label-width="120px">
|
||||
<el-switch v-model="form.prohibitOutWarehouse" />
|
||||
</el-form-item>
|
||||
<el-form-item label="停止任务" prop="stopReceiveTask" label-width="120px">
|
||||
<el-switch v-model="form.stopReceiveTask" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible8 = false">取 消</el-button>
|
||||
<el-button type="primary" @click="dialogSave">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -211,6 +240,7 @@ export default {
|
||||
dialogFormVisible5: false,
|
||||
dialogFormVisible6: false,
|
||||
dialogFormVisible7: false,
|
||||
dialogFormVisible8: false,
|
||||
form: {
|
||||
device_code: '',
|
||||
hasGoodStatus: null,
|
||||
@@ -221,7 +251,11 @@ export default {
|
||||
requireSucess: '',
|
||||
fullrequireSucess: '',
|
||||
is_disable: '',
|
||||
applySucess: ''
|
||||
applySucess: '',
|
||||
toCommand: null,
|
||||
prohibitInWarehouse: false,
|
||||
prohibitOutWarehouse: false,
|
||||
stopReceiveTask: false
|
||||
},
|
||||
allDeviceMsg: [],
|
||||
msgTop: '200px',
|
||||
@@ -312,7 +346,7 @@ export default {
|
||||
this.timer = setInterval(() => { // 定时刷新设备的状态信息
|
||||
console.log('定时器启动')
|
||||
this.initStatus()
|
||||
}, 2000)
|
||||
}, 200000)
|
||||
},
|
||||
editDevice(id) {
|
||||
let item = ''
|
||||
@@ -353,6 +387,8 @@ export default {
|
||||
this.dialogFormVisible7 = true
|
||||
} else if (clickObj.data.driver_type === 'standard_conveyor_control_with_scanner') {
|
||||
this.dialogFormVisible6 = true
|
||||
} else if (clickObj.data.driver_type === 'double_station_stacker') {
|
||||
this.dialogFormVisible8 = true
|
||||
} else {
|
||||
this.dialogFormVisible = true
|
||||
}
|
||||
@@ -368,6 +404,10 @@ export default {
|
||||
this.form.applySucess = clickObj.data.applySucess
|
||||
this.form.barcode = clickObj.data.barcode
|
||||
this.form.hand_barcode = clickObj.data.hand_barcode
|
||||
this.form.prohibitInWarehouse = clickObj.data.prohibitInWarehouse
|
||||
this.form.prohibitOutWarehouse = clickObj.data.prohibitOutWarehouse
|
||||
this.form.stopReceiveTask = clickObj.data.stopReceiveTask
|
||||
this.form.toCommand = null
|
||||
},
|
||||
moveShow(nodeData) { // 点击之后显示出来的数据----只需要设备信息
|
||||
let item = ''
|
||||
@@ -646,6 +686,7 @@ export default {
|
||||
this.dialogFormVisible5 = false
|
||||
this.dialogFormVisible6 = false
|
||||
this.dialogFormVisible7 = false
|
||||
this.dialogFormVisible8 = false
|
||||
this.initStageData()
|
||||
}).catch(err => {
|
||||
this.dialogFormVisible = false
|
||||
@@ -653,6 +694,7 @@ export default {
|
||||
this.dialogFormVisible4 = false
|
||||
this.dialogFormVisible5 = false
|
||||
this.dialogFormVisible7 = false
|
||||
this.dialogFormVisible8 = false
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user