diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
index 0a16486..28c186f 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
@@ -12,6 +12,7 @@
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.PrefixCodeEnum;
import com.casic.missiles.exception.BusinessException;
@@ -144,4 +145,12 @@
}
+ @Override
+ public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) {
+ List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds());
+ deviceList.forEach(device -> {
+ device.setGroupId(deviceToGroup.getGroupId());
+ });
+ return deviceService.updateBatchById(deviceList);
+ }
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
index 0a16486..28c186f 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
@@ -12,6 +12,7 @@
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.PrefixCodeEnum;
import com.casic.missiles.exception.BusinessException;
@@ -144,4 +145,12 @@
}
+ @Override
+ public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) {
+ List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds());
+ deviceList.forEach(device -> {
+ device.setGroupId(deviceToGroup.getGroupId());
+ });
+ return deviceService.updateBatchById(deviceList);
+ }
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
new file mode 100644
index 0000000..955b482
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.casic.missiles.mapper.DeviceLatestStateMapper;
+import com.casic.missiles.service.IDeviceLatestStateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceLatestStateServiceImpl extends ServiceImpl implements IDeviceLatestStateService {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
index 0a16486..28c186f 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
@@ -12,6 +12,7 @@
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.PrefixCodeEnum;
import com.casic.missiles.exception.BusinessException;
@@ -144,4 +145,12 @@
}
+ @Override
+ public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) {
+ List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds());
+ deviceList.forEach(device -> {
+ device.setGroupId(deviceToGroup.getGroupId());
+ });
+ return deviceService.updateBatchById(deviceList);
+ }
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
new file mode 100644
index 0000000..955b482
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.casic.missiles.mapper.DeviceLatestStateMapper;
+import com.casic.missiles.service.IDeviceLatestStateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceLatestStateServiceImpl extends ServiceImpl implements IDeviceLatestStateService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
new file mode 100644
index 0000000..110dd96
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.casic.missiles.mapper.DeviceSecurityMapper;
+import com.casic.missiles.service.IDeviceSecurityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceSecurityServiceImpl extends ServiceImpl implements IDeviceSecurityService {
+
+}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
index 0a16486..28c186f 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
@@ -12,6 +12,7 @@
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.PrefixCodeEnum;
import com.casic.missiles.exception.BusinessException;
@@ -144,4 +145,12 @@
}
+ @Override
+ public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) {
+ List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds());
+ deviceList.forEach(device -> {
+ device.setGroupId(deviceToGroup.getGroupId());
+ });
+ return deviceService.updateBatchById(deviceList);
+ }
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
new file mode 100644
index 0000000..955b482
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.casic.missiles.mapper.DeviceLatestStateMapper;
+import com.casic.missiles.service.IDeviceLatestStateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceLatestStateServiceImpl extends ServiceImpl implements IDeviceLatestStateService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
new file mode 100644
index 0000000..110dd96
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.casic.missiles.mapper.DeviceSecurityMapper;
+import com.casic.missiles.service.IDeviceSecurityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceSecurityServiceImpl extends ServiceImpl implements IDeviceSecurityService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
index 4b7ce4b..e3be61e 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
@@ -6,6 +6,7 @@
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -29,7 +30,9 @@
import com.casic.missiles.mapper.common.SysCommonMapper;
import com.casic.missiles.model.Device;
import com.casic.missiles.model.DeviceGroup;
+import com.casic.missiles.model.DeviceLatestState;
import com.casic.missiles.model.ProductInfo;
+import com.casic.missiles.service.IDeviceLatestStateService;
import com.casic.missiles.service.IDeviceService;
import com.casic.missiles.util.CommonExcelListener;
import com.casic.missiles.util.DictCodeUtils;
@@ -37,6 +40,7 @@
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
@@ -57,7 +61,7 @@
private final ProductInfoMapper productInfoMapper;
private final DeviceGroupMapper deviceGroupMapper;
private final SysCommonMapper sysCommonMapper;
-
+ private final IDeviceLatestStateService latestStateService;
@Override
public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception {
//防止出现空结构,sql语句判别失效
@@ -157,6 +161,42 @@
}
@Override
+ public void updateDeviceCell(String deviceCode, Integer cell) {
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("devcode", deviceCode);
+ updateWrapper.set("cell", cell);
+ this.update(updateWrapper);
+ }
+
+ @Override
+ public void updateDeviceLatestState(String deviceCode,
+ Integer cell,
+ String value,
+ Date uptime) {
+ Long deviceId = this.baseMapper.getDeviceIdByDevCode(deviceCode);
+ if(ObjectUtil.isNotEmpty(deviceId)){
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("device_id",deviceId);
+ DeviceLatestState latestState = latestStateService.getOne(queryWrapper);
+ if(ObjectUtil.isNotEmpty(latestState)){
+ latestState.setCell(cell+"");
+ latestState.setLogTime(uptime);
+ latestState.setMonitorValue(value);
+ latestState.setState("1");
+ latestStateService.updateById(latestState);
+ }else {
+ latestState = new DeviceLatestState();
+ latestState.setDeviceId(deviceId);
+ latestState.setCell(cell+"");
+ latestState.setLogTime(uptime);
+ latestState.setMonitorValue(value);
+ latestState.setState("1");
+ latestStateService.save(latestState);
+ }
+ }
+ }
+
+ @Override
public ReturnDTO deleteDevice(List ids) {
if (this.baseMapper.deleteBatchIds(ids) > 0) {
return ReturnUtil.success();
@@ -217,27 +257,27 @@
for (int i = 0; i < list.size(); i++) {
ImportDeviceDTO importDTO = list.get(i);
if (StrUtil.isBlank(importDTO.getDevcode())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备编号不能为空"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备编号不能为空"));
} else if (devcodeMap.containsKey(importDTO.getDevcode())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备编号在系统已存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备编号在系统已存在"));
}
if (ObjectUtil.isEmpty(importDTO.getProductName()) || !productInfoMap.containsKey(importDTO.getProductName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "产品名称不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "产品名称不能为空或系统不存在"));
} else {
importDTO.setProductId(productInfoMap.get(importDTO.getProductName()).getId());
}
if (ObjectUtil.isEmpty(importDTO.getGroupName()) || !deviceGroupInfoMap.containsKey(importDTO.getGroupName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "分组名称不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "分组名称不能为空或系统不存在"));
} else {
importDTO.setGroupId(deviceGroupInfoMap.get(importDTO.getGroupName()).getId());
}
if (ObjectUtil.isEmpty(importDTO.getModelName()) || !modelMap.containsKey(importDTO.getModelName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备型号不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备型号不能为空或系统不存在"));
} else {
importDTO.setModel(Integer.valueOf(modelMap.get(importDTO.getModelName())));
}
if (ObjectUtil.isEmpty(importDTO.getDeviceTypeName()) || !deviceMap.containsKey(importDTO.getDeviceTypeName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备类型不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备类型不能为空或系统不存在"));
} else {
importDTO.setDeviceType(Integer.valueOf(deviceMap.get(importDTO.getDeviceTypeName())));
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceSecurityMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
new file mode 100644
index 0000000..25f7f7c
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/SubscribeFrameLogMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface SubscribeFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
new file mode 100644
index 0000000..ddc84f3
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceLatestStateMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, DEVICE_ID, CELL, MONITOR_VALUE, STATE, LOG_TIME
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
index ede2f81..2e7ef62 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -28,8 +28,8 @@
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
new file mode 100644
index 0000000..169341a
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceSecurityMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID, SECRET_KEY
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
new file mode 100644
index 0000000..1cc96e2
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/SubscribeFrameLogMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID, MESSAGE_TYPE, SUBSCRIBE_TYPE, DATA_JSON, SUBSCRIBE_TIME, RESPONSE_TIME, STATUS, DEVICE_ID
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
index 09d6d9a..773eba0 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/device/DeviceListVO.java
@@ -39,7 +39,7 @@
private String groupName;
@ApiModelProperty(value = "设备状态(0离线/1在线/2报警)", dataType = "String")
- @ExcelProperty(value = "设备状态", order = 2)
+ @DictCodeField(message = "设备状态不合法", cacheName = STATUS)
private String status;
@ExcelProperty(value = "设备最新数据", order = 3)
@@ -52,22 +52,21 @@
@TableField("device_type")
private String deviceType;
+ @ExcelProperty(value = "设备状态", order = 2)
+ @ApiModelProperty(value = "设备状态名称", dataType = "String")
+ @TableField(exist = false)
+ private String statusName;
+
@ExcelProperty(value = "设备类型", order = 4)
@ApiModelProperty(value = "设备类型", dataType = "String")
@TableField(exist = false)
private String deviceTypeName;
- @ApiModelProperty(value = "设备型号", dataType = "Integer")
- @DictCodeField(message = "型号类型不合法", cacheName = MODEL)
+ @ApiModelProperty(value = "设备型号", dataType = "String")
+ @ExcelProperty(value = "设备型号", order = 5)
@TableField("model")
private String model;
- @ExcelProperty(value = "设备型号", order = 5)
- @ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
-
-
@ExcelProperty(value = "IMEI", order = 6)
@ApiModelProperty(value = "IMEI", dataType = "String")
@TableField(exist = false)
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
new file mode 100644
index 0000000..bdab750
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/group/DeviceToGroupRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.dto.group;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zt
+ * @date 2025-05-14
+ */
+@ApiModel
+@Data
+public class DeviceToGroupRequest {
+
+ @ApiModelProperty(value = "分组id", dataType = "Long")
+ private Long groupId;
+
+ @ApiModelProperty(value = "设备ids集合", dataType = "List")
+ private List deviceIds;
+
+}
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
index 3b82878..f599136 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/dto/product/ProductListDTO.java
@@ -14,9 +14,12 @@
@ApiModelProperty(value = "产品名称", dataType = "String")
private String productName;
- @ApiModelProperty(value = "设备类型", dataType = "String")
+ @ApiModelProperty(value = "产品类型", dataType = "String")
private String productType;
+ @ApiModelProperty(value = "设备类型", dataType = "String")
+ private String deviceType;
+
@ApiModelProperty(value = "设备型号", dataType = "String")
private String model;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 131b927..b67944c 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -12,6 +12,7 @@
HANDLE_FAILED(500, "操作失败"),
PARAMS_ILLEGALITY(2021, "参数不合法"),
GROUP_BIND_DEVICE(2023, "删除失败,设备组绑定的有设备"),
+ DATA_VALID_EXCEPTION(1500, "数据检验异常"),
VERSION_BIND_TASK(2024, "删除失败,升级包绑定的有任务");
private Integer code;
private String message;
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
index 0757408..9826441 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/enums/DictCodeEnum.java
@@ -72,4 +72,9 @@
*/
String ALARM_CATEGORY = "alarmCategory";
+ /**
+ * 设备状态
+ */
+ String STATUS = "deviceStatus";
+
}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
index b6733e0..8de7e77 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/Device.java
@@ -80,13 +80,9 @@
* 设备型号
*/
@TableField("model")
- @ApiModelProperty(value = "设备型号(字典值)", dataType = "Integer")
- @DictCodeField(message = "设备型号不合法", cacheName = DEVICE_TYPE)
- private Integer model;
-
@ApiModelProperty(value = "设备型号", dataType = "String")
- @TableField(exist = false)
- private String modelName;
+ private String model;
+
/**
* 名称
*/
@@ -116,6 +112,13 @@
private String iccid;
/**
+ * 电量
+ */
+ @TableField("cell")
+ @ApiModelProperty(value = "电量", dataType = "Float")
+ private Float cell;
+
+ /**
* 创建日期 默认为当前时间
*/
@TableField("create_time")
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
index c25574f..d209642 100644
--- a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
/**
*
@@ -86,7 +87,7 @@
* 采集时间
*/
@TableField("uptime")
- private LocalDateTime uptime;
+ private Date uptime;
/**
* 记录日期 默认为当前时间
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
new file mode 100644
index 0000000..3e4e88b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceLatestState.java
@@ -0,0 +1,63 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_latest_state")
+public class DeviceLatestState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 电量
+ */
+ @TableField("CELL")
+ private String cell;
+
+ /**
+ * 最新值
+ */
+ @TableField("MONITOR_VALUE")
+ private String monitorValue;
+
+ /**
+ * 状态
+ */
+ @TableField("STATE")
+ private String state;
+
+ /**
+ * 最新时间
+ */
+ @TableField("LOG_TIME")
+ private Date logTime;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
new file mode 100644
index 0000000..985447b
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceSecurity.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("device_security")
+public class DeviceSecurity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+ /**
+ * 密钥
+ */
+ @TableField("SECRET_KEY")
+ private String secretKey;
+
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
new file mode 100644
index 0000000..61a55b9
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/SubscribeFrameLog.java
@@ -0,0 +1,74 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 租户管理
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Getter
+@Setter
+@TableName("subscribe_frame_log")
+public class SubscribeFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 自增主键
+ */
+ @TableField("ID")
+ private Long id;
+
+ /**
+ * 消息类型
+ */
+ @TableField("MESSAGE_TYPE")
+ private String messageType;
+
+ /**
+ * 订阅类型
+ */
+ @TableField("SUBSCRIBE_TYPE")
+ private String subscribeType;
+
+ /**
+ * json数据
+ */
+ @TableField("DATA_JSON")
+ private String dataJson;
+
+ /**
+ * 订阅时间
+ */
+ @TableField("SUBSCRIBE_TIME")
+ private LocalDateTime subscribeTime;
+
+ /**
+ * 响应时间
+ */
+ @TableField("RESPONSE_TIME")
+ private LocalDateTime responseTime;
+
+ /**
+ * 状态
+ */
+ @TableField("STATUS")
+ private String status;
+
+ /**
+ * 设备id
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
index 720bb30..644b055 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IBusConfigService.java
@@ -23,6 +23,8 @@
ReturnDTO addBusConfig(BusConfig busConfig);
+ ReturnDTO addBatchConfig(List busConfigs);
+
ReturnDTO deleteBusConfig(List ids);
BusConfig findLatestConfigToBeSend(Long deviceId);
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
index bf0a76b..049ac23 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceGroupService.java
@@ -6,6 +6,7 @@
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.model.DeviceGroup;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@@ -35,4 +36,6 @@
DeviceGroup deviceGroupDetail(Long id);
+ boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup);
+
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
new file mode 100644
index 0000000..6abdde6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceLatestStateService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceLatestStateService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
new file mode 100644
index 0000000..a56bd80
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceSecurityService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface IDeviceSecurityService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
index e8f5377..5651bc2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceService.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
/**
@@ -56,6 +57,15 @@
*/
void updateDeviceVersion(String deviceCode, String version);
+ /**
+ * 更新设备电量
+ * @param deviceCode
+ * @param cell
+ */
+ void updateDeviceCell(String deviceCode, Integer cell);
+
+ void updateDeviceLatestState(String deviceCode, Integer cell, String value, Date uptime);
+
ReturnDTO deleteDevice(List ids);
Device deviceDetail(Long id) throws Exception;
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
new file mode 100644
index 0000000..0ef6a78
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/ISubscribeFrameLogService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 租户管理 服务类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface ISubscribeFrameLogService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
index 4fc577c..4da7f6a 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/BusConfigServiceImpl.java
@@ -54,12 +54,23 @@
}
@Override
+ public ReturnDTO addBatchConfig(List busConfigs) {
+ AuthUser shiroUser = ShiroKit.getUser();
+ busConfigs.forEach(busConfig -> {
+ busConfig.setCreateUserId(shiroUser.getId());
+ busConfig.setCreateUserName(shiroUser.getName());
+ });
+ return ReturnUtil.success(this.saveBatch(busConfigs));
+ }
+
+ @Override
public ReturnDTO addBusConfig(BusConfig busConfig) {
AuthUser shiroUser = ShiroKit.getUser();
busConfig.setCreateUserId(shiroUser.getId());
busConfig.setCreateUserName(shiroUser.getName());
List busConfigList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(busConfig.getDevcodeList())) {
+ //toDo:没存储设备id
for (String devcode : busConfig.getDevcodeList()) {
BusConfig tempBusConfig = new BusConfig();
BeanUtil.copyProperties(busConfig, tempBusConfig);
@@ -68,7 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
@@ -88,7 +100,6 @@
if (ObjectUtil.isNotNull(configList) && !configList.isEmpty()) {
return configList.get(0);
}
-
return null;
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
index 0a16486..28c186f 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceGroupServiceImpl.java
@@ -12,6 +12,7 @@
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.group.DeviceGroupListRequest;
import com.casic.missiles.dto.group.DeviceGroupListVO;
+import com.casic.missiles.dto.group.DeviceToGroupRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.PrefixCodeEnum;
import com.casic.missiles.exception.BusinessException;
@@ -144,4 +145,12 @@
}
+ @Override
+ public boolean addDeviceToGroup(DeviceToGroupRequest deviceToGroup) {
+ List deviceList = deviceService.listByIds(deviceToGroup.getDeviceIds());
+ deviceList.forEach(device -> {
+ device.setGroupId(deviceToGroup.getGroupId());
+ });
+ return deviceService.updateBatchById(deviceList);
+ }
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
new file mode 100644
index 0000000..955b482
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceLatestStateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.casic.missiles.mapper.DeviceLatestStateMapper;
+import com.casic.missiles.service.IDeviceLatestStateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceLatestStateServiceImpl extends ServiceImpl implements IDeviceLatestStateService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
new file mode 100644
index 0000000..110dd96
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceSecurityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.casic.missiles.mapper.DeviceSecurityMapper;
+import com.casic.missiles.service.IDeviceSecurityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class DeviceSecurityServiceImpl extends ServiceImpl implements IDeviceSecurityService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
index 4b7ce4b..e3be61e 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java
@@ -6,6 +6,7 @@
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -29,7 +30,9 @@
import com.casic.missiles.mapper.common.SysCommonMapper;
import com.casic.missiles.model.Device;
import com.casic.missiles.model.DeviceGroup;
+import com.casic.missiles.model.DeviceLatestState;
import com.casic.missiles.model.ProductInfo;
+import com.casic.missiles.service.IDeviceLatestStateService;
import com.casic.missiles.service.IDeviceService;
import com.casic.missiles.util.CommonExcelListener;
import com.casic.missiles.util.DictCodeUtils;
@@ -37,6 +40,7 @@
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
@@ -57,7 +61,7 @@
private final ProductInfoMapper productInfoMapper;
private final DeviceGroupMapper deviceGroupMapper;
private final SysCommonMapper sysCommonMapper;
-
+ private final IDeviceLatestStateService latestStateService;
@Override
public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception {
//防止出现空结构,sql语句判别失效
@@ -157,6 +161,42 @@
}
@Override
+ public void updateDeviceCell(String deviceCode, Integer cell) {
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("devcode", deviceCode);
+ updateWrapper.set("cell", cell);
+ this.update(updateWrapper);
+ }
+
+ @Override
+ public void updateDeviceLatestState(String deviceCode,
+ Integer cell,
+ String value,
+ Date uptime) {
+ Long deviceId = this.baseMapper.getDeviceIdByDevCode(deviceCode);
+ if(ObjectUtil.isNotEmpty(deviceId)){
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("device_id",deviceId);
+ DeviceLatestState latestState = latestStateService.getOne(queryWrapper);
+ if(ObjectUtil.isNotEmpty(latestState)){
+ latestState.setCell(cell+"");
+ latestState.setLogTime(uptime);
+ latestState.setMonitorValue(value);
+ latestState.setState("1");
+ latestStateService.updateById(latestState);
+ }else {
+ latestState = new DeviceLatestState();
+ latestState.setDeviceId(deviceId);
+ latestState.setCell(cell+"");
+ latestState.setLogTime(uptime);
+ latestState.setMonitorValue(value);
+ latestState.setState("1");
+ latestStateService.save(latestState);
+ }
+ }
+ }
+
+ @Override
public ReturnDTO deleteDevice(List ids) {
if (this.baseMapper.deleteBatchIds(ids) > 0) {
return ReturnUtil.success();
@@ -217,27 +257,27 @@
for (int i = 0; i < list.size(); i++) {
ImportDeviceDTO importDTO = list.get(i);
if (StrUtil.isBlank(importDTO.getDevcode())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备编号不能为空"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备编号不能为空"));
} else if (devcodeMap.containsKey(importDTO.getDevcode())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备编号在系统已存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备编号在系统已存在"));
}
if (ObjectUtil.isEmpty(importDTO.getProductName()) || !productInfoMap.containsKey(importDTO.getProductName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "产品名称不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "产品名称不能为空或系统不存在"));
} else {
importDTO.setProductId(productInfoMap.get(importDTO.getProductName()).getId());
}
if (ObjectUtil.isEmpty(importDTO.getGroupName()) || !deviceGroupInfoMap.containsKey(importDTO.getGroupName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "分组名称不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "分组名称不能为空或系统不存在"));
} else {
importDTO.setGroupId(deviceGroupInfoMap.get(importDTO.getGroupName()).getId());
}
if (ObjectUtil.isEmpty(importDTO.getModelName()) || !modelMap.containsKey(importDTO.getModelName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备型号不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备型号不能为空或系统不存在"));
} else {
importDTO.setModel(Integer.valueOf(modelMap.get(importDTO.getModelName())));
}
if (ObjectUtil.isEmpty(importDTO.getDeviceTypeName()) || !deviceMap.containsKey(importDTO.getDeviceTypeName())) {
- throw new BusinessException(1500, String.format(validMsg, i + 1, "设备类型不能为空或系统不存在"));
+ throw new BusinessException(BusinessExceptionEnum.DATA_VALID_EXCEPTION.getCode(), String.format(validMsg, i + 1, "设备类型不能为空或系统不存在"));
} else {
importDTO.setDeviceType(Integer.valueOf(deviceMap.get(importDTO.getDeviceTypeName())));
}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/ProductInfoServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/ProductInfoServiceImpl.java
index 1799192..fa4d9a2 100644
--- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/ProductInfoServiceImpl.java
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/ProductInfoServiceImpl.java
@@ -43,10 +43,18 @@
public Page listPage(Page page, ProductListDTO request, DataScope dataScope) throws Exception {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(request.getProductName()),
- "product_name", request.getProductName());
+ "name", request.getProductName());
queryWrapper.like(StringUtils.isNotBlank(request.getProductNo()),
"product_no", request.getProductNo());
+ queryWrapper.eq(StringUtils.isNotBlank(request.getDeviceType()),
+ "device_type", request.getDeviceType());
queryWrapper.eq("valid", 1);
+ queryWrapper.like(StringUtils.isNotBlank(request.getModel()),
+ "model", request.getModel());
+ queryWrapper.eq(StringUtils.isNotBlank(request.getEncipherType()),
+ "encipher_type", request.getEncipherType());
+ queryWrapper.eq(StringUtils.isNotBlank(request.getAccessType()),
+ "access_type", request.getAccessType());
page = this.baseMapper.selectPage(page, queryWrapper);
for (ProductInfo productInfo : page.getRecords()) {
DictCodeUtils.convertDictCodeToName(productInfo);
@@ -82,7 +90,6 @@
@Override
public ProductInfo productDetail(Long id) throws Exception{
ProductInfo productInfo = this.baseMapper.selectById(id);
-
DictCodeUtils.convertDictCodeToName(productInfo);
return productInfo;
}
diff --git a/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
new file mode 100644
index 0000000..0dc5a70
--- /dev/null
+++ b/casic-iot-common/src/main/java/com/casic/missiles/DeviceServerProperties.java
@@ -0,0 +1,22 @@
+package com.casic.missiles;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.config")
+public class DeviceServerProperties {
+
+ private String exportPath = null;
+ private String configPath = null;
+ private String downloadPath = null;
+
+ public DeviceServerProperties() {
+ }
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
new file mode 100644
index 0000000..8f0361d
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceLatestStateMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceLatestState;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 租户管理 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+public interface DeviceLatestStateMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
index 587b115..1d95a13 100644
--- a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceMapper.java
@@ -9,6 +9,8 @@
import com.casic.missiles.model.Device;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,10 @@
List listCtnbByDevCode(@Param("devCode") String devCode);
+ @Cacheable(value = "busDeviceCache", key = "#a0")
+ @Select("SELECT id FROM `device` where valid=1 and devcode= #{devCode} limit 1")
+ Long getDeviceIdByDevCode(@Param("devCode") String devCode);
+
String getDeviceEncipherType(@Param("devCode") String devCode);
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
new file mode 100644
index 0000000..343603e
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceSecurityMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper;
+
+import com.casic.missiles.model.DeviceSecurity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *