diff --git a/ruoyi-api/hw-api-business/src/main/java/com/ruoyi/business/api/RemoteBusinessService.java b/ruoyi-api/hw-api-business/src/main/java/com/ruoyi/business/api/RemoteBusinessService.java index 8421fac..10dfed8 100644 --- a/ruoyi-api/hw-api-business/src/main/java/com/ruoyi/business/api/RemoteBusinessService.java +++ b/ruoyi-api/hw-api-business/src/main/java/com/ruoyi/business/api/RemoteBusinessService.java @@ -20,4 +20,10 @@ public interface RemoteBusinessService { */ @GetMapping("/device/computeOnlineDevicecCount/{days}") public R computeOnlineDevicecCount(@PathVariable("days") int days, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/plcDevice/modbusDataProcess") + public R modbusDataProcess(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/plcDevice/mcDataProcess") + public R mcDataProcess(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TdEngineConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TdEngineConstants.java index 3970059..5816825 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TdEngineConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TdEngineConstants.java @@ -32,7 +32,9 @@ public class TdEngineConstants { // public static final String DEFAULT_DB_NAME_PREFIX = "db_scene_";//数据库名称前缀 public static final String DEFAULT_SUPER_TABLE_NAME_PREFIX = "st_devicemode_";//超级表名称前缀 + public static final String PLC_SUPER_TABLE_NAME_PREFIX = "plc_";//plc超级表名称前缀 public static final String DEFAULT_TABLE_NAME_PREFIX = "t_device_";//数据表名称前缀 + public static final String PLC_TABLE_NAME_PREFIX = "plc_device_";//plc数据表名称前缀 public static final String DEFAULT_DEVICE_STATUS_SUPER_TABLE_NAME= "st_ds";//设备状态超级表名称 public static final String DEFAULT_DEVICE_STATUS_TABLE_NAME_PREFIX = "t_ds_";//设备状态数据表名称前缀 @@ -43,6 +45,14 @@ public class TdEngineConstants { public static final int ST_TAG_DEVICECODE_TYPE = 10; public static final int ST_TAG_DEVICECODE_SIZE=50; + public static final String PLC_TAG_IP = "IP"; + public static final int PLC_TAG_IP_TYPE = 10; + public static final int PLC_TAG_IP_SIZE=100; + + public static final String PLC_TAG_LOCATION = "dlocation"; + public static final int PLC_TAG_LOCATION_TYPE = 10; + public static final int PLC_TAG_LOCATION_SIZE=50; + public static final String ST_TAG_DEVICENAME = "devicename"; public static final String ST_TAG_DEVICETYPE = "devicetype"; @@ -53,6 +63,9 @@ public class TdEngineConstants { public static final String ST_TAG_DEVICEID = "deviceid"; public static final int ST_TAG_DEVICEID_TYPE = 2; + public static final String PLC_TAG_PORT = "PORT1"; + public static final int PLC_TAG_PORT_TYPE = 2; + public static final String ST_TAG_DEVICEMODEID = "devicemodeid"; public static final int ST_TAG_DEVICEMODEID_TYPE = 2; diff --git a/ruoyi-modules/hw-business/pom.xml b/ruoyi-modules/hw-business/pom.xml index a8a5663..2958a94 100644 --- a/ruoyi-modules/hw-business/pom.xml +++ b/ruoyi-modules/hw-business/pom.xml @@ -83,6 +83,13 @@ com.ruoyi ruoyi-common-datascope + + + org.apache.plc4x + plc4j-driver-ethernet-ip + 0.6.0 + + @@ -105,6 +112,11 @@ com.ruoyi hw-api-tdengine + + com.github.dathlin + HslCommunication + 3.3.1 + diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/PlcDeviceController.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/PlcDeviceController.java index a45ee4a..a3363e2 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/PlcDeviceController.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/PlcDeviceController.java @@ -10,6 +10,7 @@ import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import org.apache.plc4x.java.api.exceptions.PlcConnectionException; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; @@ -19,6 +20,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.concurrent.ExecutionException; /** * plc设备信息(PlcDevice)表控制层 @@ -120,9 +122,9 @@ public class PlcDeviceController extends BaseController { public AjaxResult aeDataProcess() throws JsonProcessingException { return AjaxResult.success(plcDeviceService.aeDataProcess()); } - @GetMapping("/linkDataProcess") - public AjaxResult linkDataProcess() throws JsonProcessingException { - return AjaxResult.success(plcDeviceService.linkDataProcess()); + @GetMapping("/ehternetDataProcess") + public AjaxResult ehternetDataProcess() throws JsonProcessingException{ + return AjaxResult.success(plcDeviceService.ehternetDataProcess()); } @GetMapping("/list") public TableDataInfo list(PlcDevice hwDevice) { diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceDao.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceDao.java new file mode 100644 index 0000000..539d704 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceDao.java @@ -0,0 +1,91 @@ +package com.ruoyi.business.mapper; + +import com.ruoyi.business.domain.PlcDevice; +import com.ruoyi.business.domain.PlcDeviceMode; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +/** + * plc设备信息(PlcDevice)表数据库访问层 + * + * @author makejava + * @since 2024-12-19 16:22:43 + */ +public interface PlcDeviceDao { + + /** + * 通过ID查询单条数据 + * + * @param deviceId 主键 + * @return 实例对象 + */ + List queryById(); + List queryPlcDevices(@Param("accessProtocol") int accessProtocol); + + /** + * 查询指定行数据 + * + * @param plcDevice 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(PlcDevice plcDevice, @Param("pageable") Pageable pageable); + + /** + * 统计总行数 + * + * @param plcDevice 查询条件 + * @return 总行数 + */ + long count(PlcDevice plcDevice); + + /** + * 新增数据 + * + * @param plcDevice 实例对象 + * @return 影响行数 + */ + int insert(PlcDevice plcDevice); + + /** + * 批量新增数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + */ + int insertBatch(@Param("entities") List entities); + + /** + * 批量新增或按主键更新数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参 + */ + int insertOrUpdateBatch(@Param("entities") List entities); + + /** + * 修改数据 + * + * @param plcDevice 实例对象 + * @return 影响行数 + */ + int update(PlcDevice plcDevice); + + /** + * 通过主键删除数据 + * + * @param deviceId 主键 + * @return 影响行数 + */ + int deleteById(Long deviceId); + + List selectHwDeviceJoinList(PlcDevice hwDevice); + + List selectPlcDeviceMode(PlcDeviceMode queryDeviceMode); + + PlcDevice selectHwDeviceByDeviceId(Long deviceId); +} + diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeDao.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeDao.java new file mode 100644 index 0000000..d59f167 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeDao.java @@ -0,0 +1,88 @@ +package com.ruoyi.business.mapper; + +import com.ruoyi.business.domain.HwDeviceMode; +import com.ruoyi.business.domain.PlcDeviceMode; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +/** + * plc设备模型(PlcDeviceMode)表数据库访问层 + * + * @author makejava + * @since 2024-12-19 16:23:27 + */ +public interface PlcDeviceModeDao { + + /** + * 通过ID查询单条数据 + * + * @param deviceModeId 主键 + * @return 实例对象 + */ + PlcDeviceMode queryById(Long deviceModeId); + + /** + * 查询指定行数据 + * + * @param plcDeviceMode 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(PlcDeviceMode plcDeviceMode, @Param("pageable") Pageable pageable); + + /** + * 统计总行数 + * + * @param plcDeviceMode 查询条件 + * @return 总行数 + */ + long count(PlcDeviceMode plcDeviceMode); + + /** + * 新增数据 + * + * @param plcDeviceMode 实例对象 + * @return 影响行数 + */ + int insert(PlcDeviceMode plcDeviceMode); + + /** + * 批量新增数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + */ + int insertBatch(@Param("entities") List entities); + + /** + * 批量新增或按主键更新数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参 + */ + int insertOrUpdateBatch(@Param("entities") List entities); + + /** + * 修改数据 + * + * @param plcDeviceMode 实例对象 + * @return 影响行数 + */ + int update(PlcDeviceMode plcDeviceMode); + + /** + * 通过主键删除数据 + * + * @param deviceModeId 主键 + * @return 影响行数 + */ + int deleteById(Long deviceModeId); + + List selectList(PlcDeviceMode hwDeviceMode); + + int deleteHwDeviceModeByDeviceModeIds(Long[] deviceModeIds); +} + diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeFunctionDao.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeFunctionDao.java new file mode 100644 index 0000000..3f68365 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/PlcDeviceModeFunctionDao.java @@ -0,0 +1,94 @@ +package com.ruoyi.business.mapper; + +import com.ruoyi.business.domain.HwDeviceModeFunction; +import com.ruoyi.business.domain.PlcDeviceModeFunction; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +/** + * plc设备模型功能(PlcDeviceModeFunction)表数据库访问层 + * + * @author makejava + * @since 2024-12-19 16:23:52 + */ +public interface PlcDeviceModeFunctionDao { + + /** + * 通过ID查询单条数据 + * + * @param modeFunctionId 主键 + * @return 实例对象 + */ + PlcDeviceModeFunction queryById(Long modeFunctionId); + + /** + * 查询指定行数据 + * + * @param plcDeviceModeFunction 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(PlcDeviceModeFunction plcDeviceModeFunction, @Param("pageable") Pageable pageable); + + /** + * 统计总行数 + * + * @param plcDeviceModeFunction 查询条件 + * @return 总行数 + */ + long count(PlcDeviceModeFunction plcDeviceModeFunction); + + /** + * 新增数据 + * + * @param plcDeviceModeFunction 实例对象 + * @return 影响行数 + */ + int insert(PlcDeviceModeFunction plcDeviceModeFunction); + + /** + * 批量新增数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + */ + int insertBatch(@Param("entities") List entities); + + /** + * 批量新增或按主键更新数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参 + */ + int insertOrUpdateBatch(@Param("entities") List entities); + + /** + * 修改数据 + * + * @param plcDeviceModeFunction 实例对象 + * @return 影响行数 + */ + int update(PlcDeviceModeFunction plcDeviceModeFunction); + + /** + * 通过主键删除数据 + * + * @param modeFunctionId 主键 + * @return 影响行数 + */ + int deleteById(Long modeFunctionId); + + List selectFunctions(Long deviceModeId); + + List selectFunctionList(Long deviceModeId); + + List selectHwDeviceModeFunctionList(HwDeviceModeFunction queryDeviceModeFunction); + + int deleteHwDeviceModeParameterByModeFunctionId(Long modeFunctionId); + + int deleteHwDeviceModeFunctionByDeviceModeIds(Long[] deviceModeIds); +} + diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/PlcDeviceService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/PlcDeviceService.java index b4b3451..5b82853 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/PlcDeviceService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/PlcDeviceService.java @@ -5,10 +5,12 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.business.domain.HwDeviceMode; import com.ruoyi.business.domain.PlcDevice; import com.ruoyi.business.domain.PlcDeviceMode; +import org.apache.plc4x.java.api.exceptions.PlcConnectionException; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import java.util.List; +import java.util.concurrent.ExecutionException; /** * plc设备信息(PlcDevice)表服务接口 @@ -73,5 +75,5 @@ public interface PlcDeviceService { String aeDataProcess() throws JsonProcessingException; - String linkDataProcess(); + String ehternetDataProcess() throws JsonProcessingException; } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/PlcDeviceServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/PlcDeviceServiceImpl.java index 58a3c5c..104ce2d 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/PlcDeviceServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/PlcDeviceServiceImpl.java @@ -1,8 +1,10 @@ package com.ruoyi.business.service.impl; import HslCommunication.Core.Transfer.DataFormat; +import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.ModBus.ModbusTcpNet; +import HslCommunication.Profinet.AllenBradley.AllenBradleyNet; import HslCommunication.Profinet.Melsec.MelsecA1ENet; import HslCommunication.Profinet.Melsec.MelsecFxSerialOverTcp; import HslCommunication.Profinet.Melsec.MelsecHelper; @@ -28,6 +30,13 @@ import com.ruoyi.tdengine.api.RemoteTdEngineService; import com.ruoyi.tdengine.api.domain.AlterTagVo; import com.ruoyi.tdengine.api.domain.TdField; import com.ruoyi.tdengine.api.domain.TdTableVo; +import org.apache.plc4x.java.PlcDriverManager; +import org.apache.plc4x.java.api.PlcConnection; +import org.apache.plc4x.java.api.exceptions.PlcConnectionException; +import org.apache.plc4x.java.api.messages.PlcReadRequest; +import org.apache.plc4x.java.api.messages.PlcReadResponse; +import org.apache.plc4x.java.api.metadata.PlcConnectionMetadata; +import org.apache.plc4x.java.ethernetip.EtherNetIpPlcDriver; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,6 +50,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.ExecutionException; /** * plc设备信息(PlcDevice)表服务实现类 @@ -316,60 +326,70 @@ public class PlcDeviceServiceImpl implements PlcDeviceService { } return null; } -//link数据读取 + //EtherNet协议数据读取 @Override - public String linkDataProcess() { -// List plcDevices = this.plcDeviceDao.queryPlcDevices(1); -// for (PlcDevice plcDevice : plcDevices) { -// int station = plcDevice.getStation(); -// byte a = (byte)station; -// int length = plcDevice.getLength(); -// short b = (short)length; -// // ModbusTcpNet tcpNet = new ModbusTcpNet(plcDevice.getIp(),plcDevice.getPort1(), a); -// // tcpNet.getByteTransform().setDataFormat(DataFormat.CDAB); -// MelsecA1ENet net = new MelsecA1ENet(plcDevice.getIp(),plcDevice.getPort1()); -// MelsecFxSerialOverTcp melsecFxSerialOverTcp = new MelsecFxSerialOverTcp(); -// TdTableVo tdTableVo = new TdTableVo(); -// List schemaFields = new ArrayList<>(); -// TdField firstTdField = new TdField(); -// firstTdField.setFieldName(TdEngineConstants.DEFAULT_FIRST_FIELD_NAME); -// long currentTimeMillis = System.currentTimeMillis(); -// firstTdField.setFieldValue(currentTimeMillis); -// String databaseName = TdEngineConstants.getDatabaseName(); -// String tableName = TdEngineConstants.PLC_TABLE_NAME_PREFIX + plcDevice.getDeviceId(); -// // firstTdField.setFieldValue(ts); -// schemaFields.add(firstTdField); -// List list = plcDeviceModeFunctionDao.selectFunctions(plcDevice.getDeviceModeId()); -// if (plcDevice.getDataType().equals("10")){ -// OperateResultExOne resultExOne = net.ReadString(plcDevice.getLocation(),b, StandardCharsets.UTF_8); -// String content = resultExOne.Content; -// ObjectMapper objectMapper = new ObjectMapper(); -// Map map = objectMapper.readValue(content, Map.class); -// for (PlcDeviceModeFunction function : list) { -// Object value = map.get(function.getFunctionIdentifier()); -// TdField tdField = new TdField(); -// tdField.setFieldName(function.getFunctionIdentifier()); -// tdField.setFieldValue(value); -// schemaFields.add(tdField); -// } -// }else if (plcDevice.getDataType().equals("2")){ -// OperateResultExOne exOne = net.ReadInt32(plcDevice.getLocation()); -// TdField tdField = new TdField(); -// tdField.setFieldName(list.get(0).getFunctionIdentifier()); -// tdField.setFieldValue(exOne.Content); -// schemaFields.add(tdField); -// }else if (plcDevice.getDataType().equals("4")){ -// OperateResultExOne floatOperateResultExOne = net.ReadFloat(plcDevice.getLocation()); -// TdField tdField = new TdField(); -// tdField.setFieldName(list.get(0).getFunctionIdentifier()); -// tdField.setFieldValue(floatOperateResultExOne.Content); -// schemaFields.add(tdField); -// } -// tdTableVo.setDatabaseName(databaseName); -// tdTableVo.setTableName(tableName); -// tdTableVo.setSchemaFields(schemaFields); -// final R insertResult = this.remoteTdEngineService.insertTable(tdTableVo , SecurityConstants.INNER); -// } + public String ehternetDataProcess() throws JsonProcessingException { +// AllenBradleyNet plc = new AllenBradleyNet("127.0.0.1",44818); +// OperateResult operateResult = plc.ConnectServer(); +// OperateResultExOne f = plc.ReadString("F"); +// String content = f.Content; +// return null; + List plcDevices = this.plcDeviceDao.queryPlcDevices(4); + for (PlcDevice plcDevice : plcDevices) { + int station = plcDevice.getStation(); + byte a = (byte)station; + int length = plcDevice.getLength(); + short b = (short)length; + // ModbusTcpNet tcpNet = new ModbusTcpNet(plcDevice.getIp(),plcDevice.getPort1(), a); + // tcpNet.getByteTransform().setDataFormat(DataFormat.CDAB); + AllenBradleyNet ethernet = new AllenBradleyNet(plcDevice.getIp(),plcDevice.getPort1()); + TdTableVo tdTableVo = new TdTableVo(); + List schemaFields = new ArrayList<>(); + TdField firstTdField = new TdField(); + firstTdField.setFieldName(TdEngineConstants.DEFAULT_FIRST_FIELD_NAME); + long currentTimeMillis = System.currentTimeMillis(); + firstTdField.setFieldValue(currentTimeMillis); + String databaseName = TdEngineConstants.getDatabaseName(); + String tableName = TdEngineConstants.PLC_TABLE_NAME_PREFIX + plcDevice.getDeviceId(); + // firstTdField.setFieldValue(ts); + schemaFields.add(firstTdField); + List list = plcDeviceModeFunctionDao.selectFunctions(plcDevice.getDeviceModeId()); + if (plcDevice.getDataType().equals("10")){ + OperateResultExOne resultExOne = ethernet.ReadString(plcDevice.getLocation(),b, StandardCharsets.UTF_8); + String content = resultExOne.Content; + ObjectMapper objectMapper = new ObjectMapper(); + Map map = objectMapper.readValue(content, Map.class); + for (PlcDeviceModeFunction function : list) { + Object value = map.get(function.getFunctionIdentifier()); + TdField tdField = new TdField(); + tdField.setFieldName(function.getFunctionIdentifier()); + tdField.setFieldValue(value); + schemaFields.add(tdField); + } + }else if (plcDevice.getDataType().equals("2")||plcDevice.getDataType().equals("9")){ + OperateResultExOne exOne = ethernet.ReadInt32(plcDevice.getLocation()); + TdField tdField = new TdField(); + tdField.setFieldName(list.get(0).getFunctionIdentifier()); + tdField.setFieldValue(exOne.Content); + schemaFields.add(tdField); + }else if (plcDevice.getDataType().equals("4")){ + OperateResultExOne floatOperateResultExOne = ethernet.ReadFloat(plcDevice.getLocation()); + TdField tdField = new TdField(); + tdField.setFieldName(list.get(0).getFunctionIdentifier()); + tdField.setFieldValue(floatOperateResultExOne.Content); + schemaFields.add(tdField); + }else if (plcDevice.getDataType().equals("5")){ + OperateResultExOne doubleOperateResultExOne = ethernet.ReadDouble(plcDevice.getLocation()); + TdField tdField = new TdField(); + tdField.setFieldName(list.get(0).getFunctionIdentifier()); + tdField.setFieldValue(doubleOperateResultExOne.Content); + schemaFields.add(tdField); + } + tdTableVo.setDatabaseName(databaseName); + tdTableVo.setTableName(tableName); + tdTableVo.setSchemaFields(schemaFields); + final R insertResult = this.remoteTdEngineService.insertTable(tdTableVo , SecurityConstants.INNER); + } return null; } diff --git a/ruoyi-ui/src/api/plc/device.js b/ruoyi-ui/src/api/plc/device.js new file mode 100644 index 0000000..e94ee6e --- /dev/null +++ b/ruoyi-ui/src/api/plc/device.js @@ -0,0 +1,129 @@ +import request from '@/utils/request' +import {parseStrEmpty} from "@/utils/ruoyi"; + +// 查询设备信息列表 +export function listDevice(query) { + return request({ + url: '/business/plcDevice/list', + method: 'get', + params: query + }) +} + +// 查询设备信息详细 +export function getDevice(deviceId) { + return request({ + url: '/business/plcDevice/' + deviceId, + method: 'get' + }) +} + +// 新增设备信息 +export function addDevice(data) { + return request({ + url: '/business/plcDevice', + method: 'post', + data: data + }) +} + +// 修改设备信息 +export function updateDevice(data) { + return request({ + url: '/business/plcDevice', + method: 'put', + data: data + }) +} + +// 删除设备信息 +export function delDevice(deviceId) { + return request({ + url: '/business/plcDevice/' + deviceId, + method: 'delete' + }) +} + + +// 查询场景信息列表供查询页面选择使用(例如下拉列表) +export function getScenes(query) { + return request({ + url: '/business/device/getScenes', + method: 'get', + params: query + }) +} + +// 查询场景信息列表供编辑页面选择使用(例如下拉列表) +export function getEditedScenes(query) { + return request({ + url: '/business/device/getEditedScenes', + method: 'get', + params: query + }) +} +export function getProtocols() { + return request({ + url: '/business/plcDevice/getProtocols', + method: 'get' + }) +} + +// 查询监控单元树 +export function getMonitorTree(sceneId) { + return request({ + url: '/business/device/monitorUnitTree/' + parseStrEmpty(sceneId), + method: 'get' + }) +} + + +// 查询设备模型 +export function getDeviceModes(sceneId) { + return request({ + url: '/business/plcDevice/getDeviceModes/' + parseStrEmpty(sceneId), + method: 'get' + }) +} + +// 查询网关设备 +export function getGatewayDevices(sceneId) { + return request({ + url: '/business/device/getGatewayDevices/' + parseStrEmpty(sceneId), + method: 'get' + }) +} + + +// 设备状态修改 +export function changeDeviceStatus(deviceId, deviceStatus) { + const data = { + deviceId, + deviceStatus + } + return request({ + url: '/business/plcDevice/changeDeviceStatus', + method: 'put', + data: data + }) +} + +export function publishControlCommand(deviceId, type) { + const data = { + deviceId, + type + } + return request({ + url: '/business/device/publishControlCommand', + method: 'put', + data: data + }) +} + +// 重新生成tdengine所有表 +export function rebuildTdTables() { + return request({ + url: '/business/device/rebuildTdTables', + method: 'get' + }) +} diff --git a/ruoyi-ui/src/api/plc/plcDeviceMode.js b/ruoyi-ui/src/api/plc/plcDeviceMode.js new file mode 100644 index 0000000..e97c395 --- /dev/null +++ b/ruoyi-ui/src/api/plc/plcDeviceMode.js @@ -0,0 +1,89 @@ +import request from '@/utils/request' + +// 查询设备模型列表 +export function listDeviceMode(query) { + return request({ + url: '/business/plcDeviceMode/list', + method: 'get', + params: query + }) +} +export function addDeviceModeFunction(data) { + return request({ + url: '/business/plcDeviceModeFunction', + method: 'post', + data: data + }) +} +export function updateDeviceModeFunction(data) { + return request({ + url: '/business/plcDeviceModeFunction', + method: 'put', + data: data + }) +} +export function delDeviceModeFunction(modeFunctionId) { + return request({ + url: '/business/plcDeviceModeFunction/' + modeFunctionId, + method: 'delete' + }) +} +// 查询设备模型详细 +export function getDeviceMode(deviceModeId) { + return request({ + url: '/business/plcDeviceMode/' + deviceModeId, + method: 'get' + }) +} + +// 新增设备模型 +export function addDeviceMode(data) { + return request({ + url: '/business/plcDeviceMode', + method: 'post', + data: data + }) +} + +// 修改设备模型 +export function updateDeviceMode(data) { + return request({ + url: '/business/plcDeviceMode', + method: 'put', + data: data + }) +} + +// 删除设备模型 +export function delDeviceMode(deviceModeId) { + return request({ + url: '/business/plcDeviceMode/' + deviceModeId, + method: 'delete' + }) +} + +// 查询场景信息列表供插叙页面选择使用(例如下拉列表) +export function getScenes(query) { + return request({ + url: '/business/deviceMode/getScenes', + method: 'get', + params: query + }) +} + +// 查询场景信息列表供编辑页面选择使用(例如下拉列表) +export function getEditedScenes(query) { + return request({ + url: '/business/deviceMode/getEditedScenes', + method: 'get', + params: query + }) +} + +// 重新生成tdengine所有超级表 +export function rebuildTdSuperTables() { + return request({ + url: '/business/deviceMode/rebuildTdSuperTables', + method: 'get' + }) +} diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 699fb21..911df5b 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -231,6 +231,20 @@ export const dynamicRoutes = [ } ] }, + { + path: '/plcDeviceMode/mode-add', + component: Layout, + hidden: true, + permissions: ['business:deviceMode:add'], + children: [ + { + path: 'index', + component: () => import('@/views/plc/plcModel/editDeviceMode'), + name: 'ModeAdd', + meta: { title: '添加设备模型', activeMenu: '/plc/plcModel' } + } + ] + }, { path: '/deviceMode/mode-edit', component: Layout, @@ -245,6 +259,20 @@ export const dynamicRoutes = [ } ] }, + { + path: '/plcDeviceMode/mode-edit', + component: Layout, + hidden: true, + permissions: ['business:deviceMode:edit'], + children: [ + { + path: 'index/:deviceModeId(\\d+)', + component: () => import('@/views/plc/plcModel/editDeviceMode'), + name: 'ModeEdit', + meta: { title: '修改设备模型', activeMenu: '/plc/plcModel' } + } + ] + }, { path: '/electronicFence/fence-add', component: Layout, diff --git a/ruoyi-ui/src/views/plc/plcEquipment/index.vue b/ruoyi-ui/src/views/plc/plcEquipment/index.vue index 9d6c9c7..ed00d37 100644 --- a/ruoyi-ui/src/views/plc/plcEquipment/index.vue +++ b/ruoyi-ui/src/views/plc/plcEquipment/index.vue @@ -1,175 +1,882 @@ - - diff --git a/ruoyi-ui/src/views/plc/plcModel/editDeviceMode.vue b/ruoyi-ui/src/views/plc/plcModel/editDeviceMode.vue new file mode 100644 index 0000000..0ef6783 --- /dev/null +++ b/ruoyi-ui/src/views/plc/plcModel/editDeviceMode.vue @@ -0,0 +1,885 @@ + + + diff --git a/ruoyi-ui/src/views/plc/plcModel/index.vue b/ruoyi-ui/src/views/plc/plcModel/index.vue index 67dd541..bb4f2a5 100644 --- a/ruoyi-ui/src/views/plc/plcModel/index.vue +++ b/ruoyi-ui/src/views/plc/plcModel/index.vue @@ -1,37 +1,45 @@ - -