设备管理、MQTT模块
parent
29f6dc18a8
commit
f7d94e59f8
|
|
@ -0,0 +1,29 @@
|
|||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>njzscloud-common-mqtt</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
|
||||
<version>1.2.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.njzscloud.common.mqtt.config;
|
||||
|
||||
import com.njzscloud.common.mqtt.support.Mqtt;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnProperty(value = "mqtt.enabled", havingValue = "true")
|
||||
@EnableConfigurationProperties(MqttProperties.class)
|
||||
public class MqttAutoConfiguration {
|
||||
|
||||
@Bean(destroyMethod = "shutdown")
|
||||
public Mqtt mqtt(MqttProperties mqttProperties) {
|
||||
return new Mqtt(mqttProperties);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.njzscloud.common.mqtt.config;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ConfigurationProperties("mqtt")
|
||||
public class MqttProperties {
|
||||
private boolean enabled;
|
||||
private String broker;
|
||||
private String clientId;
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
package com.njzscloud.common.mqtt.support;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.njzscloud.common.core.jackson.Jackson;
|
||||
import com.njzscloud.common.mqtt.config.MqttProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.paho.client.mqttv3.*;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@Slf4j
|
||||
public class Mqtt implements BeanPostProcessor {
|
||||
private static final Map<String, Consumer<MqttMsg>> fn = new ConcurrentHashMap<>();
|
||||
private MqttClient client;
|
||||
|
||||
public Mqtt(MqttProperties mqttProperties) {
|
||||
String broker = mqttProperties.getBroker();
|
||||
String clientId = mqttProperties.getClientId();
|
||||
String username = mqttProperties.getUsername();
|
||||
String password = mqttProperties.getPassword();
|
||||
try {
|
||||
client = new MqttClient(broker, clientId);
|
||||
MqttConnectOptions options = new MqttConnectOptions();
|
||||
if (StrUtil.isNotBlank(username) && StrUtil.isNotBlank(password)) {
|
||||
options.setUserName(username);
|
||||
options.setPassword(password.toCharArray());
|
||||
}
|
||||
|
||||
client.connect(options);
|
||||
client.setCallback(new MsgHandler());
|
||||
} catch (Exception e) {
|
||||
client = null;
|
||||
log.error("mqtt连接失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
try {
|
||||
if (client != null) {
|
||||
client.disconnect();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("mqtt关闭失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void subscribe(String topic, int qos) {
|
||||
try {
|
||||
client.subscribe(topic, qos);
|
||||
} catch (Exception e) {
|
||||
log.error("mqtt 订阅失败:{} {}", topic, qos, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void subscribe(String topic) {
|
||||
this.subscribe(topic, 0);
|
||||
}
|
||||
|
||||
public void subscribe(String topic, int qos, Consumer<MqttMsg> handler) {
|
||||
fn.put(topic, handler);
|
||||
this.subscribe(topic, qos);
|
||||
}
|
||||
|
||||
public void subscribe(String topic, Consumer<MqttMsg> handler) {
|
||||
this.subscribe(topic, 0, handler);
|
||||
}
|
||||
|
||||
public void publish(String topic, int qos, Object msg) {
|
||||
String jsonStr = null;
|
||||
try {
|
||||
jsonStr = Jackson.toJsonStr(msg);
|
||||
MqttMessage message = new MqttMessage(jsonStr.getBytes());
|
||||
message.setQos(qos);
|
||||
client.publish(topic, message);
|
||||
} catch (Exception e) {
|
||||
log.error("mqtt 发布消息失败:{} {} {}", topic, qos, jsonStr, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void publish(String topic, Object msg) {
|
||||
this.publish(topic, 0, msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
Class<?> clazz = bean.getClass();
|
||||
for (Method method : clazz.getDeclaredMethods()) {
|
||||
MqttHandler mqttHandler = method.getAnnotation(MqttHandler.class);
|
||||
if (mqttHandler == null) continue;
|
||||
String topic = mqttHandler.topic();
|
||||
int qos = mqttHandler.qos();
|
||||
this.subscribe(topic, qos);
|
||||
Consumer<MqttMsg> handler = (msg) -> {
|
||||
try {
|
||||
method.invoke(bean, msg);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
};
|
||||
fn.put(topic, handler);
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
|
||||
public static class MsgHandler implements MqttCallback {
|
||||
public void messageArrived(String topic, MqttMessage message) throws Exception {
|
||||
Consumer<MqttMsg> handler = fn.get(topic);
|
||||
if (handler == null) return;
|
||||
try {
|
||||
handler.accept(new MqttMsg(message.getPayload()));
|
||||
} catch (Exception e) {
|
||||
log.error("mqtt 消息处理失败:{} {}", topic, new String(message.getPayload()), e);
|
||||
}
|
||||
}
|
||||
|
||||
public void connectionLost(Throwable cause) {
|
||||
log.error("mqtt 连接已断开", cause);
|
||||
}
|
||||
|
||||
public void deliveryComplete(IMqttDeliveryToken token) {
|
||||
log.info("消息投递结果:{}", token.isComplete());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.njzscloud.common.mqtt.support;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.METHOD})
|
||||
public @interface MqttHandler {
|
||||
String topic();
|
||||
|
||||
int qos() default 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.njzscloud.common.mqtt.support;
|
||||
|
||||
import com.njzscloud.common.core.jackson.Jackson;
|
||||
|
||||
public class MqttMsg {
|
||||
private final byte[] msg;
|
||||
|
||||
public MqttMsg(byte[] msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public <T> T getMsg(Class<T> clazz) {
|
||||
return Jackson.toBean(msg, clazz);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
|
||||
com.njzscloud.common.mqtt.config.MqttAutoConfiguration
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
<module>njzscloud-common-sichen</module>
|
||||
<module>njzscloud-common-sn</module>
|
||||
<module>njzscloud-common-gen</module>
|
||||
<module>njzscloud-common-mqtt</module>
|
||||
</modules>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,10 @@
|
|||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-oss</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-mqtt</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||
|
||||
@SpringBootApplication
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Main.class, args);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package com.njzscloud.supervisory.device.contant;
|
||||
|
||||
import com.njzscloud.common.core.ienum.DictStr;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 字典代码:device_category
|
||||
* 字典名称:设备分类
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum DeviceCategory implements DictStr {
|
||||
barrier("barrier", "道闸"),
|
||||
loadometer("loadometer", "地磅"),
|
||||
vidicon("vidicon", "摄像头"),
|
||||
voicebox("voicebox", "音柱"),
|
||||
;
|
||||
private final String val;
|
||||
private final String txt;
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.njzscloud.supervisory.device.contant;
|
||||
|
||||
import com.njzscloud.common.core.ienum.DictStr;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 字典代码:device_code
|
||||
* 字典名称:设备编号
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum DeviceCode implements DictStr {
|
||||
JinQianZhi("JinQianZhi", "进前置道闸"),
|
||||
Chu("Chu", "出道闸"),
|
||||
JinSheXiangTou("JinSheXiangTou", "进摄像头"),
|
||||
JinYinZhu("JinYinZhu", "进音柱"),
|
||||
DiBang("DiBang", "地磅"),
|
||||
ChuYinZhu("ChuYinZhu", "出音柱"),
|
||||
ChuSheXiangTou("ChuSheXiangTou", "出摄像头"),
|
||||
Jin("Jin", "进道闸"),
|
||||
ChuQianZhi("ChuQianZhi", "出前置道闸"),
|
||||
;
|
||||
private final String val;
|
||||
private final String txt;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.njzscloud.supervisory.device.contant;
|
||||
|
||||
import com.njzscloud.common.core.ienum.DictStr;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 字典代码:device_product
|
||||
* 字典名称:设备产品
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum DeviceProduct implements DictStr {
|
||||
Ty("Ty", "通用"),
|
||||
Hk("Hk", "海康摄像头"),
|
||||
Mq("Mq", "MQTT 摄像头"),
|
||||
;
|
||||
private final String val;
|
||||
private final String txt;
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
package com.njzscloud.supervisory.device.controller;
|
||||
|
||||
import com.njzscloud.common.core.utils.R;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.device.pojo.entity.DeviceInfoEntity;
|
||||
import com.njzscloud.supervisory.device.service.DeviceInfoService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备信息表
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/device_info")
|
||||
@RequiredArgsConstructor
|
||||
public class DeviceInfoController {
|
||||
|
||||
private final DeviceInfoService deviceInfoService;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param deviceInfoEntity 数据
|
||||
*/
|
||||
@PostMapping("/add")
|
||||
public R<?> add(@RequestBody DeviceInfoEntity deviceInfoEntity) {
|
||||
deviceInfoService.add(deviceInfoEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param deviceInfoEntity 数据
|
||||
*/
|
||||
@PostMapping("/modify")
|
||||
public R<?> modify(@RequestBody DeviceInfoEntity deviceInfoEntity) {
|
||||
deviceInfoService.modify(deviceInfoEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param ids Ids
|
||||
*/
|
||||
@PostMapping("/del")
|
||||
public R<?> del(@RequestBody List<Long> ids) {
|
||||
deviceInfoService.del(ids);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*
|
||||
* @param id Id
|
||||
* @return DeviceInfoEntity 结果
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public R<DeviceInfoEntity> detail(@RequestParam Long id) {
|
||||
return R.success(deviceInfoService.detail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param deviceInfoEntity 筛选条件
|
||||
* @param pageParam 分页参数
|
||||
* @return PageResult<DeviceInfoEntity> 分页结果
|
||||
*/
|
||||
@GetMapping("/paging")
|
||||
public R<PageResult<DeviceInfoEntity>> paging(PageParam pageParam, DeviceInfoEntity deviceInfoEntity) {
|
||||
return R.success(deviceInfoService.paging(pageParam, deviceInfoEntity));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.njzscloud.supervisory.device.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njzscloud.supervisory.device.pojo.entity.DeviceInfoEntity;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 设备信息表
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceInfoMapper extends BaseMapper<DeviceInfoEntity> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
package com.njzscloud.supervisory.device.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
|
||||
import com.njzscloud.supervisory.device.contant.DeviceCategory;
|
||||
import com.njzscloud.supervisory.device.contant.DeviceCode;
|
||||
import com.njzscloud.supervisory.device.contant.DeviceProduct;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 设备信息表
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "device_info", autoResultMap = true)
|
||||
public class DeviceInfoEntity {
|
||||
|
||||
/**
|
||||
* Id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
private String sn;
|
||||
/**
|
||||
* 设备编号; 字典代码:device_code
|
||||
*/
|
||||
private DeviceCode deviceCode;
|
||||
|
||||
/**
|
||||
* 设备分类; 字典代码:device_category
|
||||
*/
|
||||
private DeviceCategory deviceCategory;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 产品; 字典代码:device_product
|
||||
*/
|
||||
private DeviceProduct deviceProduct;
|
||||
|
||||
/**
|
||||
* 站点; 字典代码:station
|
||||
*/
|
||||
private String station;
|
||||
|
||||
/**
|
||||
* 车道; 字典代码:lane
|
||||
*/
|
||||
private String lane;
|
||||
|
||||
/**
|
||||
* 设备配置
|
||||
*/
|
||||
@TableField(typeHandler = JsonTypeHandler.class)
|
||||
private Map<String, Object> config;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
package com.njzscloud.supervisory.device.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.device.mapper.DeviceInfoMapper;
|
||||
import com.njzscloud.supervisory.device.pojo.entity.DeviceInfoEntity;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备信息表
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoEntity> implements IService<DeviceInfoEntity> {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param deviceInfoEntity 数据
|
||||
*/
|
||||
public void add(DeviceInfoEntity deviceInfoEntity) {
|
||||
this.save(deviceInfoEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param deviceInfoEntity 数据
|
||||
*/
|
||||
public void modify(DeviceInfoEntity deviceInfoEntity) {
|
||||
this.updateById(deviceInfoEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param ids Ids
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void del(List<Long> ids) {
|
||||
this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*
|
||||
* @param id Id
|
||||
* @return DeviceInfoEntity 结果
|
||||
*/
|
||||
public DeviceInfoEntity detail(Long id) {
|
||||
return this.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param deviceInfoEntity 筛选条件
|
||||
* @param pageParam 分页参数
|
||||
* @return PageResult<DeviceInfoEntity> 分页结果
|
||||
*/
|
||||
public PageResult<DeviceInfoEntity> paging(PageParam pageParam, DeviceInfoEntity deviceInfoEntity) {
|
||||
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<DeviceInfoEntity>query(deviceInfoEntity)));
|
||||
}
|
||||
|
||||
}
|
||||
5
pom.xml
5
pom.xml
|
|
@ -92,6 +92,11 @@
|
|||
<artifactId>njzscloud-common-gen</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-mqtt</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"name": "njzscloud",
|
||||
"describe": "模板",
|
||||
"describe": "再昇云",
|
||||
"avatar": "data:image/png;base64,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",
|
||||
"version": "4.9.4",
|
||||
"createdTime": "2023-4-13 11:53:52",
|
||||
"updatedTime": "2025-9-9 15:48:30",
|
||||
"updatedTime": "2025-9-10 18:03:04",
|
||||
"dbConns": [],
|
||||
"profile": {
|
||||
"default": {
|
||||
|
|
@ -584,6 +584,23 @@
|
|||
"attr9": "",
|
||||
"uiHint": ""
|
||||
},
|
||||
{
|
||||
"defKey": "biz_obj",
|
||||
"defName": "业务对象",
|
||||
"comment": "字典代码:biz_obj",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "FE077E87-7584-4EE0-926F-42BE99287EB8"
|
||||
},
|
||||
{
|
||||
"defKey": "nickname",
|
||||
"defName": "昵称",
|
||||
|
|
@ -8615,6 +8632,325 @@
|
|||
"correlations": [],
|
||||
"indexes": [],
|
||||
"type": "P"
|
||||
},
|
||||
{
|
||||
"id": "5FE3C76E-9E05-41E2-B464-C48DDCA17E06",
|
||||
"env": {
|
||||
"base": {
|
||||
"nameSpace": "",
|
||||
"codeRoot": ""
|
||||
}
|
||||
},
|
||||
"defKey": "device_info",
|
||||
"defName": "设备信息表",
|
||||
"comment": "",
|
||||
"properties": {},
|
||||
"sysProps": {
|
||||
"nameTemplate": "{defKey}[{defName}]"
|
||||
},
|
||||
"notes": {},
|
||||
"headers": [
|
||||
{
|
||||
"refKey": "hideInGraph",
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defKey",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "type",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "len",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "scale",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defaultValue",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defName",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "comment",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "notNull",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "primaryKey",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "autoIncrement",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "refDict",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "domain",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "isStandard",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "uiHint",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "extProps",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr1",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr2",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr3",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr4",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr5",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr6",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr7",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr8",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr9",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"defKey": "id",
|
||||
"defName": "Id",
|
||||
"comment": "",
|
||||
"type": "BIGINT",
|
||||
"len": "",
|
||||
"scale": "",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"extProps": {},
|
||||
"domain": "",
|
||||
"id": "941AFA70-D821-4877-B668-8F9674899C08",
|
||||
"baseType": "9B6B9E10-DB11-4409-878B-5868A19CD9B0"
|
||||
},
|
||||
{
|
||||
"defKey": "sn",
|
||||
"defName": "设备序列号",
|
||||
"comment": "",
|
||||
"type": "VARCHAR",
|
||||
"len": 128,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "B9BCF7F3-40C0-4E20-A84D-499CBE85D0BE"
|
||||
},
|
||||
{
|
||||
"defKey": "device_code",
|
||||
"defName": "设备编号",
|
||||
"comment": "字典代码:device_code",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "D75A6D86-8882-45B9-8143-667759DDA827",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "1DA0402E-CD7F-45E9-88C0-5432CDF73A07"
|
||||
},
|
||||
{
|
||||
"defKey": "device_category",
|
||||
"defName": "设备分类",
|
||||
"comment": "字典代码:device_category",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "BE38FA3D-4549-4993-8E9F-92BE0A4AB729",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "EBFF7D17-F713-4053-BB59-F39EF6B0E038"
|
||||
},
|
||||
{
|
||||
"defKey": "device_name",
|
||||
"defName": "设备名称",
|
||||
"comment": "",
|
||||
"type": "VARCHAR",
|
||||
"len": 128,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "8D5AE44C-B4A2-43A0-A5BA-99D243EC886C"
|
||||
},
|
||||
{
|
||||
"defKey": "device_product",
|
||||
"defName": "产品",
|
||||
"comment": "字典代码:device_product",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "9A6116EE-3FC6-4E12-87E4-42A136BA2F3B",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "9419E4D1-AD9B-463F-AF86-BEF52D7FA6ED"
|
||||
},
|
||||
{
|
||||
"defKey": "station",
|
||||
"defName": "站点",
|
||||
"comment": "字典代码:station",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "''",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "4A28D80E-20E6-4E83-8F75-B0D81D3C329B"
|
||||
},
|
||||
{
|
||||
"defKey": "lane",
|
||||
"defName": "车道",
|
||||
"comment": "字典代码:lane",
|
||||
"type": "VARCHAR",
|
||||
"len": 32,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "''",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "3CADC5AB-C756-43C9-AD44-15D5A2EF0E2F"
|
||||
},
|
||||
{
|
||||
"defKey": "config",
|
||||
"defName": "设备配置",
|
||||
"comment": "",
|
||||
"type": "TEXT",
|
||||
"len": "",
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "B1BC2E92-6A75-44C0-A254-76E066047F53",
|
||||
"extProps": {},
|
||||
"id": "151D84C1-72A4-40D7-809E-4B13EA9AB9BF"
|
||||
},
|
||||
{
|
||||
"defKey": "memo",
|
||||
"defName": "备注",
|
||||
"comment": "",
|
||||
"type": "VARCHAR",
|
||||
"len": 255,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "''",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "54A0CD61-AB0E-4F88-9CBF-3ECB682CAD41"
|
||||
}
|
||||
],
|
||||
"correlations": [],
|
||||
"indexes": [],
|
||||
"type": "P"
|
||||
}
|
||||
],
|
||||
"views": [],
|
||||
|
|
@ -9136,7 +9472,7 @@
|
|||
"defKey": "tpl_category",
|
||||
"defName": "模板类型",
|
||||
"sort": "",
|
||||
"intro": "",
|
||||
"intro": "20",
|
||||
"id": "2D49FD09-9028-4494-A0C0-E9069062BBF6",
|
||||
"items": [
|
||||
{
|
||||
|
|
@ -9200,6 +9536,225 @@
|
|||
"id": "751F98FE-5D56-43CC-968D-D93F6B381B9D"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"defKey": "device_category",
|
||||
"defName": "设备分类",
|
||||
"sort": "",
|
||||
"intro": "21",
|
||||
"id": "BE38FA3D-4549-4993-8E9F-92BE0A4AB729",
|
||||
"items": [
|
||||
{
|
||||
"defKey": "barrier",
|
||||
"defName": "道闸",
|
||||
"sort": "1",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "8CF98C38-C21D-4139-99D2-234292DC5A15"
|
||||
},
|
||||
{
|
||||
"defKey": "loadometer",
|
||||
"defName": "地磅",
|
||||
"sort": "2",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "3D97DE7E-3252-440E-934C-AFFF526D9479"
|
||||
},
|
||||
{
|
||||
"defKey": "vidicon",
|
||||
"defName": "摄像头",
|
||||
"sort": "3",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "38D30E7A-E4EE-445A-B3C8-4EA55037A609"
|
||||
},
|
||||
{
|
||||
"defKey": "voicebox",
|
||||
"defName": "音柱",
|
||||
"sort": "4",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "C689B648-3E6F-407F-85FF-6C8D39648A53"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"defKey": "device_code",
|
||||
"defName": "设备编号",
|
||||
"sort": "",
|
||||
"intro": "22",
|
||||
"id": "D75A6D86-8882-45B9-8143-667759DDA827",
|
||||
"items": [
|
||||
{
|
||||
"defKey": "JinQianZhi",
|
||||
"defName": "进前置道闸",
|
||||
"sort": "1",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "D4DB1142-2243-4B2D-8EF4-C4D7AD19EE07"
|
||||
},
|
||||
{
|
||||
"defKey": "Chu",
|
||||
"defName": "出道闸",
|
||||
"sort": "2",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "47C3C4B8-B347-4367-94A6-CC5DF91D6978"
|
||||
},
|
||||
{
|
||||
"defKey": "JinSheXiangTou",
|
||||
"defName": "进摄像头",
|
||||
"sort": "3",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "6D08556F-482F-4601-836C-6C313EDF33D9"
|
||||
},
|
||||
{
|
||||
"defKey": "JinYinZhu",
|
||||
"defName": "进音柱",
|
||||
"sort": "4",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "83608BF4-EB9F-4495-9CB1-B9482554C8DE"
|
||||
},
|
||||
{
|
||||
"defKey": "DiBang",
|
||||
"defName": "地磅",
|
||||
"sort": "5",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "38318461-0CE9-475C-A07E-4DABE6A3B697"
|
||||
},
|
||||
{
|
||||
"defKey": "ChuYinZhu",
|
||||
"defName": "出音柱",
|
||||
"sort": "6",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "3DBC8D14-6106-4A92-AC02-D980171B95F8"
|
||||
},
|
||||
{
|
||||
"defKey": "ChuSheXiangTou",
|
||||
"defName": "出摄像头",
|
||||
"sort": "7",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "2B32472E-0238-495D-A3BE-56D5F4B49AF7"
|
||||
},
|
||||
{
|
||||
"defKey": "Jin",
|
||||
"defName": "进道闸",
|
||||
"sort": "8",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "0DF00D1F-3F97-4BCB-8185-83C864F0D4D5"
|
||||
},
|
||||
{
|
||||
"defKey": "ChuQianZhi",
|
||||
"defName": "出前置道闸",
|
||||
"sort": "9",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "AF03D59D-C3DC-4A73-821E-1451132F509E"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"defKey": "device_product",
|
||||
"defName": "设备产品",
|
||||
"sort": "",
|
||||
"intro": "23",
|
||||
"id": "9A6116EE-3FC6-4E12-87E4-42A136BA2F3B",
|
||||
"items": [
|
||||
{
|
||||
"defKey": "Ty",
|
||||
"defName": "通用",
|
||||
"sort": "1",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "CA01A9EB-1092-4EF7-85DE-BB415D244894"
|
||||
},
|
||||
{
|
||||
"defKey": "Hk",
|
||||
"defName": "海康摄像头",
|
||||
"sort": "2",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "68E36AF2-708D-49AD-B8AE-FE8E68599633"
|
||||
},
|
||||
{
|
||||
"defKey": "Mq",
|
||||
"defName": "MQTT 摄像头",
|
||||
"sort": "3",
|
||||
"parentKey": "",
|
||||
"intro": "",
|
||||
"enabled": true,
|
||||
"attr1": "",
|
||||
"attr2": "",
|
||||
"attr3": "",
|
||||
"id": "02D6DCF7-7736-4BC0-885A-F30F8B4FD3E1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"viewGroups": [],
|
||||
|
|
|
|||
Loading…
Reference in New Issue