更新
This commit is contained in:
@@ -298,4 +298,6 @@ public interface DeviceService {
|
||||
* @param request
|
||||
*/
|
||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package org.nl.acs.device.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
@@ -20,6 +21,7 @@ import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
|
||||
import org.nl.acs.device.device_driver.standard_inspect.ReadUtil;
|
||||
import org.nl.acs.device.service.*;
|
||||
import org.nl.acs.device.service.dto.*;
|
||||
import org.nl.acs.device_driver.DeviceDriver;
|
||||
import org.nl.acs.device_driver.DeviceDriverDefination;
|
||||
import org.nl.acs.device_driver.ScannerDeviceDriver;
|
||||
import org.nl.acs.device_driver.basedriver.oven_manipulator.OvenGantryManipulatorDeviceDriver;
|
||||
@@ -35,6 +37,7 @@ import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination;
|
||||
import org.nl.acs.opc.Device;
|
||||
import org.nl.acs.opc.DeviceAppService;
|
||||
import org.nl.acs.opc.DeviceAppServiceImpl;
|
||||
import org.nl.acs.opc.DeviceManageDto;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.FileUtil;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
@@ -848,9 +851,13 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial
|
||||
|
||||
}
|
||||
|
||||
//deviceAppService.reload();
|
||||
deviceAppService.removeDevice(device_code);
|
||||
|
||||
deviceAppService.addDevice(device_code);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void changeDeviceStatus(JSONObject form) {
|
||||
String device_code = form.getString("device_code");
|
||||
|
||||
@@ -272,7 +272,7 @@ public class ItemProtocol {
|
||||
public Float getOpcFloatValue(String protocol) {
|
||||
Float value = this.driver.getFloatValue(protocol);
|
||||
if (ObjectUtil.isEmpty(value)) {
|
||||
log.error("读取错误!");
|
||||
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
@@ -282,7 +282,7 @@ public class ItemProtocol {
|
||||
public int getOpcIntegerValue(String protocol) {
|
||||
Integer value = this.driver.getIntegerValue(protocol);
|
||||
if (value == null) {
|
||||
log.error("读取错误!");
|
||||
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
@@ -293,7 +293,7 @@ public class ItemProtocol {
|
||||
public short getOpcShortValue(String protocol) {
|
||||
Short value = this.driver.getShortValue(protocol);
|
||||
if (value == null) {
|
||||
log.error("读取错误!");
|
||||
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.acs.device_driver.basedriver.agv.xg_agv;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -12,6 +13,7 @@ import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
|
||||
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
|
||||
import org.nl.acs.instruction.service.InstructionService;
|
||||
import org.nl.acs.instruction.service.dto.Instruction;
|
||||
import org.nl.acs.monitor.DeviceStageMonitor;
|
||||
import org.nl.acs.opc.Device;
|
||||
import org.nl.acs.opc.DeviceAppService;
|
||||
import org.nl.acs.route.service.RouteLineService;
|
||||
@@ -27,12 +29,12 @@ import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* magic3.0
|
||||
* 仙工agv
|
||||
*/
|
||||
@Slf4j
|
||||
@Data
|
||||
@RequiredArgsConstructor
|
||||
public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver {
|
||||
public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, DeviceStageMonitor {
|
||||
@Autowired
|
||||
RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl");
|
||||
@Autowired
|
||||
@@ -60,8 +62,8 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
|
||||
int DI12 = 0;
|
||||
int DO0 = 0;
|
||||
int DO1 = 0;
|
||||
int DO2 = 0;
|
||||
Float x = 0f;
|
||||
int DO2 = 0;
|
||||
Float x = 0f;
|
||||
Float y = 0f;
|
||||
Float angle = 0f;
|
||||
int navigation_address =0;
|
||||
@@ -106,7 +108,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
|
||||
int last_continue_navigation =0;
|
||||
int last_cancle_navigation =0;
|
||||
int last_drum_run_status =0;
|
||||
|
||||
String message = null;
|
||||
String device_code;
|
||||
Instruction inst = null;
|
||||
protected ItemProtocol itemProtocol = new ItemProtocol(this);
|
||||
@@ -150,16 +152,39 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
|
||||
|
||||
|
||||
//获取最小电量
|
||||
if(ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("min_electric"))){
|
||||
message = "未配置最小电量";
|
||||
return;
|
||||
}
|
||||
double min_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("min_electric"));
|
||||
//获取最大电量
|
||||
if(ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("cancle_electric"))){
|
||||
message = "未配置最大电量";
|
||||
return;
|
||||
}
|
||||
double cancle_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("cancle_electric"));
|
||||
//可执行任务电量
|
||||
if(ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("task_electric"))){
|
||||
message = "未配置可执行任务电量";
|
||||
return;
|
||||
}
|
||||
double task_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("task_electric"));
|
||||
//休息点
|
||||
int relax_point = Integer.parseInt((String)this.getDevice().getExtraValue().get("relax_point"));
|
||||
if(ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("relax_point"))){
|
||||
message = "未配置休息点";
|
||||
return;
|
||||
}
|
||||
Device relax_point_device = deviceAppService.findDeviceByCode((String)this.getDevice().getExtraValue().get("relax_point"));
|
||||
int relax_point = Integer.parseInt(relax_point_device.getAddress());
|
||||
//充电点
|
||||
int charge_point = Integer.parseInt((String)this.getDevice().getExtraValue().get("charge_point"));
|
||||
if(ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("charge_point"))){
|
||||
message = "未配置充电点";
|
||||
return;
|
||||
}
|
||||
Device charge_point_device = deviceAppService.findDeviceByCode((String)this.getDevice().getExtraValue().get("charge_point"));
|
||||
int charge_point = Integer.parseInt(charge_point_device.getAddress());
|
||||
List<Instruction> instList = instructionService.findAllInstFromCache();
|
||||
|
||||
if(instList.size()>0){
|
||||
inst = instList.get(0);
|
||||
}
|
||||
@@ -176,11 +201,12 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
|
||||
}
|
||||
} else {
|
||||
// log.info("address:{},滚筒状态:{},车子状态:{},DI4:{},DO1:{},DO2:{},导航状态:{}",address,drum_run_status,stop,DI4,DO1,DO2,navigation_status);
|
||||
int start_device_code = Integer.parseInt(inst.getStart_device_code());
|
||||
int next_device_code = Integer.parseInt(inst.getNext_device_code());
|
||||
Device start_device = deviceAppService.findDeviceByCode(String.valueOf(start_device_code));
|
||||
Device next_device = deviceAppService.findDeviceByCode(String.valueOf(next_device_code));
|
||||
|
||||
|
||||
Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code());
|
||||
Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code());
|
||||
int start_device_code = Integer.parseInt(start_device.getAddress());
|
||||
int next_device_code = Integer.parseInt(next_device.getAddress());
|
||||
StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver;
|
||||
//指令状态就绪
|
||||
if(StrUtil.equals("0",inst.getInstruction_status())){
|
||||
@@ -283,5 +309,23 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
|
||||
ReadUtil.write(itemMap, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
JSONObject jo = new JSONObject();
|
||||
String mode = "";
|
||||
jo.put("device_name", this.getDevice().getDevice_name());
|
||||
jo.put("mode", mode);
|
||||
jo.put("message", this.getMessage());
|
||||
jo.put("is_click", true);
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDeviceStatus(JSONObject data) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -81,4 +81,8 @@ public interface DeviceAppService {
|
||||
*/
|
||||
String findDeviceTypeByCode(String deviceCode);
|
||||
|
||||
void removeDevice(String deviceCode);
|
||||
|
||||
void addDevice(String deviceCode);
|
||||
|
||||
}
|
||||
|
||||
@@ -341,5 +341,49 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDevice(String deviceCode) {
|
||||
|
||||
Iterator<Device> iterator = devices.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Device device = iterator.next();
|
||||
if (StrUtil.equals(device.getDevice_code(), deviceCode)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
Iterator<String> iterator2 = code_indexs.iterator();
|
||||
while (iterator2.hasNext()) {
|
||||
String str = iterator2.next();
|
||||
if (StrUtil.equals(str, deviceCode)) {
|
||||
iterator2.remove();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDevice(String deviceCode) {
|
||||
List<DeviceManageDto> deviceManageDtos = this.deviceManageService.queryAllWithExtra(deviceCode);
|
||||
int i = 0;
|
||||
|
||||
for (int size = deviceManageDtos.size(); i < size; ++i) {
|
||||
DeviceManageDto deviceManage = (DeviceManageDto) deviceManageDtos.get(i);
|
||||
Device device = new Device();
|
||||
BeanUtil.copyProperties(deviceManage, device);
|
||||
this.devices.add(device);
|
||||
this.code_indexs.add(device.getDevice_code());
|
||||
|
||||
if (!StrUtil.isEmpty(device.getDriver_code())) {
|
||||
DeviceDriverDefination defination = this.deviceDriverDefinationAppService.getDeviceDriverDefination(deviceManage.getDriver_code());
|
||||
if (defination != null) {
|
||||
device.setDeviceDriverDefination(defination);
|
||||
DeviceDriver driver = defination.getDriverInstance(device);
|
||||
device.setDeviceDriver(driver);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,4 +4,6 @@ import java.util.List;
|
||||
|
||||
public interface DeviceManageService {
|
||||
List<DeviceManageDto> queryAllWithExtra();
|
||||
|
||||
List<DeviceManageDto> queryAllWithExtra(String device_code);
|
||||
}
|
||||
|
||||
@@ -72,4 +72,69 @@ public class DeviceManageServiceImpl implements DeviceManageService {
|
||||
|
||||
return devices;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceManageDto> queryAllWithExtra(String device_code) {
|
||||
JSONArray arr = WQLObject.getWQLObject("acs_device").query("device_code = '" + device_code + " '").getResultJSONArray(0);
|
||||
|
||||
JSONArray extArr = WQLObject.getWQLObject("acs_device_extra").query("device_code = '" + device_code + " '").getResultJSONArray(0);
|
||||
|
||||
List<DeviceExtraManageDto> extras = extArr.toJavaList(DeviceExtraManageDto.class);
|
||||
|
||||
WQLObject runpointTab = WQLObject.getWQLObject("acs_device_runpoint");
|
||||
|
||||
WQLObject opcTab = WQLObject.getWQLObject("acs_opc");
|
||||
//OPC_PLC表【acs_opc_plc】
|
||||
WQLObject plcTab = WQLObject.getWQLObject("acs_opc_plc");
|
||||
List<DeviceManageDto> devices = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
DeviceManageDto device = json.toJavaObject(DeviceManageDto.class);
|
||||
String opc_server_id = json.getString("opc_server_id");
|
||||
String opc_plc_id = json.getString("opc_plc_id");
|
||||
if (StrUtil.isNotEmpty(opc_plc_id) && StrUtil.isNotEmpty(opc_server_id)) {
|
||||
//OPC表【acs_opc】
|
||||
JSONObject rb = opcTab.query("is_delete= '0' AND is_active= '1' AND opc_id = '" + opc_server_id + "'").uniqueResult(0);
|
||||
if(ObjectUtil.isEmpty(rb)){
|
||||
System.out.println(device.getDevice_code());
|
||||
continue;
|
||||
}
|
||||
String opc_code= rb.getString("opc_code");
|
||||
device.setOpc_server_code(opc_code);
|
||||
if(ObjectUtil.isEmpty(plcTab.query("is_delete= '0' AND is_active= '1' AND plc_id = '" + opc_plc_id + "'").uniqueResult(0)))
|
||||
{
|
||||
System.out.println(device.getDevice_code());
|
||||
continue;
|
||||
}
|
||||
String plc_code = plcTab.query("is_delete= '0' AND is_active= '1' AND plc_id = '" + opc_plc_id + "'").uniqueResult(0).getString("plc_code");
|
||||
device.setOpc_plc_code(plc_code);
|
||||
}
|
||||
devices.add(device);
|
||||
}
|
||||
|
||||
Iterator it = devices.iterator();
|
||||
|
||||
while (it.hasNext()) {
|
||||
DeviceManageDto device = (DeviceManageDto) it.next();
|
||||
Iterator var5 = extras.iterator();
|
||||
while (var5.hasNext()) {
|
||||
DeviceExtraManageDto extra = (DeviceExtraManageDto) var5.next();
|
||||
if (extra.getDevice_id().equals(device.getDevice_id())) {
|
||||
device.getExtra().add(extra);
|
||||
if (StrUtil.equals(extra.getExtra_code(), "station_manager") && StrUtil.equals(extra.getExtra_value().toString(), "true")) {
|
||||
String has_goods = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).getString("hasgoods");
|
||||
String material_type = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).getString("material_type");
|
||||
String batch = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).getString("batch");
|
||||
String islock = runpointTab.query("is_delete= '0' AND is_active= '1' AND device_id = '" + extra.getDevice_id() + "'").uniqueResult(0).getString("islock");
|
||||
device.setMaterial_type(material_type);
|
||||
device.setHas_goods(Integer.parseInt(has_goods));
|
||||
device.setBatch(batch);
|
||||
device.setIslock(islock);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return devices;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,6 @@ export default {
|
||||
this.device_code = this.$route.params.device_code
|
||||
this.$nextTick(() => {
|
||||
get(this.device_code).then(data => {
|
||||
debugger
|
||||
this.form = data.device
|
||||
// 默认是普通站点
|
||||
// this.currentComponent = 'standard_ordinary_site'
|
||||
|
||||
@@ -172,6 +172,14 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbr_value2">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_read2()">测试读</el-link>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data2[scope.$index].dbr_value" size="mini" class="edit-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbw_value">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link>
|
||||
@@ -212,8 +220,8 @@ import {
|
||||
import { selectOpcList } from '@/api/acs/device/opc'
|
||||
import { selectPlcList } from '@/api/acs/device/opcPlc'
|
||||
import { selectListByOpcID } from '@/api/acs/device/opcPlc'
|
||||
|
||||
import crud from '@/mixins/crud'
|
||||
import deviceCrud from '@/api/acs/device/device'
|
||||
|
||||
export default {
|
||||
name: 'StandardAutodoor',
|
||||
@@ -285,6 +293,9 @@ export default {
|
||||
this.dataOpcservers = data
|
||||
this.opc_id = this.$props.parentForm.opc_server_id
|
||||
})
|
||||
deviceCrud.selectDeviceList().then(data => {
|
||||
this.deviceList = data
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
@@ -346,6 +357,15 @@ export default {
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
},
|
||||
test_read2() {
|
||||
testRead(this.data2, this.opc_id).then(data => {
|
||||
this.data2 = data
|
||||
console.log(this.data2)
|
||||
this.notify('操作成功!', 'success')
|
||||
}).catch(err => {
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
},
|
||||
test_write1() {
|
||||
testwrite(this.data2, this.opc_id).then(data => {
|
||||
this.notify('操作成功!', 'success')
|
||||
|
||||
Reference in New Issue
Block a user