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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
new file mode 100644
index 0000000..ef14b28
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.casic.missiles.mapper.SubscribeFrameLogMapper;
+import com.casic.missiles.service.ISubscribeFrameLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class SubscribeFrameLogServiceImpl extends ServiceImpl implements ISubscribeFrameLogService {
+
+}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
new file mode 100644
index 0000000..ef14b28
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.casic.missiles.mapper.SubscribeFrameLogMapper;
+import com.casic.missiles.service.ISubscribeFrameLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class SubscribeFrameLogServiceImpl extends ServiceImpl implements ISubscribeFrameLogService {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
index 9df26fc..6f5a049 100644
--- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
@@ -22,6 +22,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -79,6 +80,7 @@
return deviceService.updateDevice(device);
}
+ @CacheEvict(value="busDeviceCache", allEntries = true)
@ApiOperation("删除(支持批删、单删)")
@PostMapping("/delete")
public ReturnDTO deleteDeviceGroup(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) {
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
new file mode 100644
index 0000000..ef14b28
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.casic.missiles.mapper.SubscribeFrameLogMapper;
+import com.casic.missiles.service.ISubscribeFrameLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class SubscribeFrameLogServiceImpl extends ServiceImpl implements ISubscribeFrameLogService {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
index 9df26fc..6f5a049 100644
--- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
@@ -22,6 +22,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -79,6 +80,7 @@
return deviceService.updateDevice(device);
}
+ @CacheEvict(value="busDeviceCache", allEntries = true)
@ApiOperation("删除(支持批删、单删)")
@PostMapping("/delete")
public ReturnDTO deleteDeviceGroup(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) {
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
new file mode 100644
index 0000000..18cfdd3
--- /dev/null
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 租户管理 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@RestController
+@RequestMapping("/subscribe-frame-log")
+public class SubscribeFrameLogController {
+
+}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
new file mode 100644
index 0000000..ef14b28
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.casic.missiles.mapper.SubscribeFrameLogMapper;
+import com.casic.missiles.service.ISubscribeFrameLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class SubscribeFrameLogServiceImpl extends ServiceImpl implements ISubscribeFrameLogService {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
index 9df26fc..6f5a049 100644
--- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
@@ -22,6 +22,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -79,6 +80,7 @@
return deviceService.updateDevice(device);
}
+ @CacheEvict(value="busDeviceCache", allEntries = true)
@ApiOperation("删除(支持批删、单删)")
@PostMapping("/delete")
public ReturnDTO deleteDeviceGroup(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) {
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
new file mode 100644
index 0000000..18cfdd3
--- /dev/null
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 租户管理 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@RestController
+@RequestMapping("/subscribe-frame-log")
+public class SubscribeFrameLogController {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java
new file mode 100644
index 0000000..69f5863
--- /dev/null
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.controller;
+
+import com.casic.missiles.DeviceServerProperties;
+import com.casic.missiles.core.base.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 模板管理包
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@Api(tags = "文件下载")
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Autowired
+ private DeviceServerProperties gunsProperties;
+
+
+ @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx")
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ String path = gunsProperties.getConfigPath();
+ logger.info(path);
+ if (path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ File file = new File(path, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+// response.setContentLength((int) file.length());
+ response.setHeader("content-Length",String.valueOf(file.length()));//解决文件提示损坏
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+
+
+}
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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();
@@ -207,27 +247,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-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
new file mode 100644
index 0000000..ef14b28
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/SubscribeFrameLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.impl;
+
+import com.casic.missiles.model.SubscribeFrameLog;
+import com.casic.missiles.mapper.SubscribeFrameLogMapper;
+import com.casic.missiles.service.ISubscribeFrameLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 租户管理 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@Service
+public class SubscribeFrameLogServiceImpl extends ServiceImpl implements ISubscribeFrameLogService {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
index 9df26fc..6f5a049 100644
--- a/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/DeviceController.java
@@ -22,6 +22,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -79,6 +80,7 @@
return deviceService.updateDevice(device);
}
+ @CacheEvict(value="busDeviceCache", allEntries = true)
@ApiOperation("删除(支持批删、单删)")
@PostMapping("/delete")
public ReturnDTO deleteDeviceGroup(@RequestBody IdsDTO idsDTO, BindingResult bindingResult) {
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
new file mode 100644
index 0000000..18cfdd3
--- /dev/null
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/SubscribeFrameLogController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 租户管理 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2025-06-16
+ */
+@RestController
+@RequestMapping("/subscribe-frame-log")
+public class SubscribeFrameLogController {
+
+}
diff --git a/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java b/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java
new file mode 100644
index 0000000..69f5863
--- /dev/null
+++ b/casic-iot-web/src/main/java/com/casic/missiles/controller/TemplateController.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.controller;
+
+import com.casic.missiles.DeviceServerProperties;
+import com.casic.missiles.core.base.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 模板管理包
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@Api(tags = "文件下载")
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Autowired
+ private DeviceServerProperties gunsProperties;
+
+
+ @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx")
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ String path = gunsProperties.getConfigPath();
+ logger.info(path);
+ if (path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ File file = new File(path, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+// response.setContentLength((int) file.length());
+ response.setHeader("content-Length",String.valueOf(file.length()));//解决文件提示损坏
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+
+
+}
diff --git a/casic-iot-web/src/main/resources/config/application-dev.yml b/casic-iot-web/src/main/resources/config/application-dev.yml
index ec165dc..ebde94a 100644
--- a/casic-iot-web/src/main/resources/config/application-dev.yml
+++ b/casic-iot-web/src/main/resources/config/application-dev.yml
@@ -42,7 +42,9 @@
db:
init:
enable: false
-
+ config:
+ #模板下载路径
+ config-path: D:\code\iot\sensorhub-plus\casic-iot-web\src\main\resources\config\temp
logging:
level:
root: error
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 34a4133..83a31b1 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,4 +32,8 @@
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);
+
}
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 1652cf1..2330a0e 100644
--- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml
@@ -26,8 +26,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 b5575f5..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
@@ -62,17 +62,11 @@
@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/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/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/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 e1eb579..25eb140 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;
/**
@@ -54,6 +55,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 ebce87b..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
@@ -79,8 +79,8 @@
}
}
if (this.saveBatch(busConfigList)) {
- //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
- convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
+// //TODO:是否需要配置项,若不需要只能根据每个产品固定写,是否需要通过redis,待定
+// convertParamItemToSend(busConfig.getConfigJson(), busConfig.getDevcodeList());
return ReturnUtil.success();
}
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
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 375f189..cf9826b 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语句判别失效
@@ -147,6 +151,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